你能帮我把这件事做好吗。
我正在尝试重定向
/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]
感谢
很抱歉我对你的问题感到困惑,我现在明白了。所以…
修改你的.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定义的默认页面。我更喜欢显式地指定页面,但它不需要。