当前位置: 首页 > 知识库问答 >
问题:

htaccess mod_rewrite-拖尾斜杠和重定向循环

莫繁
2023-03-14

以下是我的htaccess代码:

RewriteEngine On
RewriteRule ^s/(.*)/(.*) /index.php?search=$1&category=$2 [L,QSA]

RewriteCond %{QUERY_STRING} ^search=([A-Za-z0-9\+]+)$
RewriteRule ^(.*)$ /s/%1/? [R=301,L]

RewriteCond %{QUERY_STRING} ^search=([A-Za-z0-9\+]+)&category=([A-Za-z0-9\+]+)$
RewriteRule ^(.*)$ /s/%1/%2/? [R=301,L]

我需要制定一个重写规则,如下所示:

http://mywebsite.com/s/query+term => http://mywebsite.com/?search=query+term

OR if there is a category

http://mywebsite.com/s/query+term/Category => http://mywebsite.com/?search=query+term&category=Category
RewriteEngine On
RewriteRule ^s/(.*)/(.*)/ /index.php?search=$1&category=$2 [L,QSA]
RewriteEngine On
RewriteRule ^s/(.*)/(.*)/ /index.php?search=$1&category=$2 [L,QSA]

RewriteCond %{QUERY_STRING} ^search=([A-Za-z0-9\+]+)$
RewriteRule ^(.*)$ /s/%1/? [R=301,L]

RewriteCond %{QUERY_STRING} ^search=([A-Za-z0-9\+]+)&category=([A-Za-z0-9\+]+)$
RewriteRule ^(.*)$ /s/%1/%2/? [R=301,L]

共有1个答案

沈凡
2023-03-14

您可以使用以下规则:

RewriteEngine on

#1--Redirect from "?search=foobar&cat=cat" to "/s/foobar/cat" --#
RewriteCond %{THE_REQUEST} /\?search=([^&]+)&cat=([^\s]+) [NC]
RewriteRule ^ /s/%1/%/%2? [NC,L,R]
#2--Redirect from "/?search=foobar" to "/s/foobar" --#
RewriteCond %{THE_REQUEST} /\?search=([^/\s]+) [NC]
RewriteRule ^ /s/%1? [NC,L,R]
#1--Rewrite "s/foobar/cat" to "/?search=foobar&cat=cat"--#
RewriteRule ^s/([^/]+)/([^/]+)/?$ /?search=$1&$category=$2 [NC,L]
#2--Rewrite "s/foobar" to "/?search=foobar"--#
RewriteRule ^s/([^/]+)/?$ /?search=$1 [NC,L]
 类似资料:
  • 问题内容: 当我尝试这个 有用。但是当我尝试 它将我重定向到 知道为什么吗? 这是我的htaccess文件 问题答案: 将代码更改为此:

  • 问题内容: 我正在使用Node.js和Express,并且具有以下路由: 我有一个Disqus小部件上我的课的网页,我注意到一个奇怪的行为是要当和我得到两个不同的网页(对他们都有我以前在Disqus增加,而另一个没有评论评论)。 有没有一种方法可以将我的所有网址“规范化”为不加斜杠?我尝试添加标志来表达,但结果相同 谢谢 问题答案: 尝试为此添加中间件;

  • 问题内容: 我在两个不同的计算机上有两个应用程序。在计算机A上,文件中的行如下所示: 该网址对和都适用。但是在计算机BI上,有一个类似的url写成: 出于某种原因,计算机B上的/可以正常工作,但会挂起并且不会像计算机A上那样直接返回。这两个文件看起来和我一样。 问题答案: 检查settings.py文件中的设置 django文档中的更多信息

  • 问题内容: 我在两个不同的计算机上有两个应用程序。在计算机A上的文件中,有一行如下所示: 该网址对和都适用。但是在计算机BI上,有一个类似的url写成: 由于某种原因,计算机B上的可以正常工作,但会挂起并且不会像计算机A上那样直接返回。我是否错过了某些事情?这两个文件对我来说都一样。 问题答案: 检查文件中的设置

  • 我们已经为我的公司创建了一个新网站,我们决定保留旧网站,并使其将所有内容和页面重定向到新网站的类似内容页面。 我已经创建了一个htaccess文件来替换旧网站上的旧文件。 这个htaccess文件包含以下行:

  • 本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下