我的 .htaccess 文件是:
Redirect 301 http://domain.com/news/articles?dtMain_start=150 http://domain.com/news/articles
Redirect 301 http://domain.com/news/articles?dtMain_start=160 http://domain.com/news/articles
Redirect 301 http://domain.com/news/articles?dtMain_start=170 http://domain.com/news/articles
#
RewriteEngine On
RewriteBase /
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
我还必须纳入以下规则
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.co.uk/$1 [R=301,L]
我无法让他们一起工作...任何人都可以帮忙...
我尝试在 RewriteCond 之前堆叠重定向,我得到了这个......http://www.domain.com/news/articles?q=news/articles?dbMain_start=150
ie http://domain.com/newpage?q=oldpage
好吧,Mod_Alias 和 Mod_Rewrite 互不喜欢。
我可以写一些类似的东西:
RewriteCond %{REQUEST_QUERY_STRING} ^.*&bodgeredirect=true$
RewriteRule ^(.*)&bodgeredirect=true$ index.php?q=$1 [L,QSA]
首先:没有 mod_redirect。 http://httpd.apache.org/docs/2.2/mod/ Redirect http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect是 mod_alias 的指令。
And the Redirect
指令与 mod_alias 的任何其他指令一样,仅适用于 URL 路径。所以你的Redirect
指令不会按预期工作。使用 mod_rewrite 等效项代替:
RewriteCond %{HTTP_HOST} =example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^dtMain_start=(150|160|170)$
RewriteRule ^news/articles$ /news/articles? [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
一般来说,如果模式彼此一致,混合 mod_alias 和 mod_rewrite 并不是一个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)