帮助mod_rewrite的和mod_redirect [英] Help with mod_rewrite and mod_redirect

查看:205
本文介绍了帮助mod_rewrite的和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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆