帮助mod_rewrite的和mod_redirect [英] Help with mod_rewrite and mod_redirect
问题描述
我的.htaccess文件是:
重定向301 http://domain.com/news/articles?dtMain_start=150 http://domain.com/news/articles
重定向301 http://domain.com/news/articles?dtMain_start=160 http://domain.com/news/articles
重定向301 http://domain.com/news/articles?dtMain_start=170 http://domain.com/news/articles
#
RewriteEngine叙述上
的RewriteBase /
#友好的URL部分
的RewriteCond%{} REQUEST_FILENAME!-f
的RewriteCond%{} REQUEST_FILENAME!-d
重写规则^(。*)$的index.php?Q = $ 1 [L,QSA]
我还必须包含以下规则
RewriteEngine叙述上
的RewriteCond%{HTTP_HOST} ^ domain.com
重写规则(。*)http://www.domain.co.uk/$1 [R = 301,L]
我不能让他们一起工作......任何人都可以帮助...
我尝试了堆叠的RewriteCond之前的重定向和我得到这个...
http://www.domain.com/news/articles?q=news/articles?dbMain_start=150
即 http://domain.com/newpage?q=oldpage
好吧启用mod_alias和mod_rewrite的不喜欢对方。
我可以写的东西,如:
的RewriteCond%{REQUEST_QUERY_STRING} ^ *&放大器; bodgeredirect =真$
重写规则^&AMP(*);?bodgeredirect = TRUE $的index.php Q = $ 1 [L,QSA]
首先:有不mod_redirect。 重定向
是mod_alias中的指令。
而重定向
指令,像mod_alias中的其他任何指令,并只与URL路径的工作。因此,按预期重定向
指令将无法正常工作。使用mod_rewrite等效代替:
的RewriteCond%{HTTP_HOST} = example.com
重写规则(。*)http://www.example.com/$1 [R = 301,L]
的RewriteCond%{QUERY_STRING} ^ dtMain_start =(150 | 160 | 170)$
重写规则^新闻/文章$ /新闻/文章? [L,R = 301]
的RewriteCond%{} REQUEST_FILENAME!-f
的RewriteCond%{} REQUEST_FILENAME!-d
重写规则^(。*)$的index.php?Q = $ 1 [L,QSA]
在一般这不是一个好主意,混合mod_alias中和mod_rewrite的,如果图案相互一致。
My .htaccess file is:
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]
I also have to incorporate the following rule
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.co.uk/$1 [R=301,L]
I cannot get them to work together... can anyone help...
I tried just stacking the Redirects before the RewriteCond and I get this...
http://www.domain.com/news/articles?q=news/articles?dbMain_start=150
ie http://domain.com/newpage?q=oldpage
Okay Mod_Alias and Mod_Rewrite don't like each other.
Can I write something like:
RewriteCond %{REQUEST_QUERY_STRING} ^.*&bodgeredirect=true$
RewriteRule ^(.*)&bodgeredirect=true$ index.php?q=$1 [L,QSA]
First of all: There is not mod_redirect. Redirect
is a directive of mod_alias.
And the Redirect
directive, like any other directive of mod_alias, does only work with the URL path. So your Redirect
directives won’t work as expected. Use mod_rewrite equivalents instead:
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]
In general it is not a good idea to mix mod_alias and mod_rewrite if the patterns coincide with each other.
这篇关于帮助mod_rewrite的和mod_redirect的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!