htaccess使用变量查询参数重定向

时间:2018-11-15 13:27:19

标签: apache .htaccess

请您帮我解决这个问题。

我正在尝试重定向

/search.php?id=5GHU&distance=50&sort=title

/search.php?id=5GHU

/search.php?id=5GHU&distance=50

/search/?query_string_values

即无论是一个查询字符串参数还是多个查询字符串参数,

这就是我尝试过的。

RewriteBase /

RewriteCond %{QUERY_STRING} (?:^|&)id=([^&]+)
RewriteRule ^search\.php$ /search/%1? [L,R=permanent]

谢谢

1 个答案:

答案 0 :(得分:1)

很抱歉让我对您的问题感到困惑,现在知道了。所以...

像这样修改您的.htaccess:

RewriteEngine On
RewriteRule "^/search.php$"    "/search/"    [L,R=301,QSA]

简而言之,它将获取查询字符串(以?开头的/search.php之后的字符串)并将其附加到“ / search /”。这是通过RewriteRule的QSA标志完成的。不管您有多少个参数,它都会全部添加。

请参见https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa

所以

/search.php?a=1&b=2  -->    /search/?a=1&b=2
/search.php?c=3      -->    /search/?c=3

由于/search/?a=1&b=2未指定要使用的页面,因此它将使用配置中DirectoryIndex定义的默认页面。我更喜欢显式指定页面,但是它不能工作。

相关问题