如何将“www.mydomain.com/pattern/pattern/value”重定向到“www.mydomain.com/pattern/value”? 使用:
RewriteRule ^pattern/(.*) /$1 [l,r,qsa]
重定向至:www.mydomain.com/value,错过了模式目录。
答案 0 :(得分:0)
这是因为规则由于这种模式而执行了两次:^pattern/(.*)
/pattern/pattern/value
并重定向到/pattern/value
/pattern/value
并重定向到/value
用以下内容替换您的规则:
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^/]+/(.+)$ /$1?r [L,R]
答案 1 :(得分:0)
感谢anubhava指出我正确的方向: 这是我的最终代码
RewriteRule ^search/(.*) search.php?q=$1 [qsa]
RewriteRule ^search/images/(.*) images/$1
RewriteRule ^search/css/(.*) css/$1
RewriteRule ^search/search/(.*) /search/$1?s [l,r]
RewriteCond %{HTTP_REFERER} search/(.*)
RewriteCond %{QUERY_STRINg} !^s$
RewriteRule ^search/(.*) /$1 [l,r]
我只在双模式的情况下添加?s QUERY_STRING,以尽可能保持干净。 仅当链接来自包含查询结果的页面时,HTTP_REFERER才用于应用规则。