.htaccess mod_重写和mod_重定向帮助

.htaccess mod_重写和mod_重定向帮助,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的.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/

我的.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]
我不能让他们一起工作。。。有人能帮忙吗

我试着在重写前堆叠重定向,我得到了这个。。。
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_alias的一个指令

与mod_alias的任何其他指令一样,
Redirect
指令只对URL路径起作用。因此,您的
重定向
指令将无法按预期工作。改为使用mod_重写等效项:

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不是一个好主意。

谢谢。我的错误在于误解了重定向的来源。我已经给了500左右的重定向在上述格式从搜索引擎优化机构。我意识到我的问题是有多余的空格和非法字符,而不是URL编码。我可以在重写之前转储所有重定向吗?@Simon:因为提到的
重定向
指令无论如何都不起作用,是的。@Simon:哦,还可以转储你的SEO代理。。)@秋葵,我希望我能!你能看到我原来问题的更新吗?Mod_Rewrite正在破坏重定向。。。如果发生重定向,我可以绕过Mod_重写吗?谢谢。@Simon:不,恐怕不行。这意味着混合使用mod_别名和mod_重写是个坏主意。