htaccess 301重定向到重写规则

时间:2013-02-06 08:18:50

标签: .htaccess redirect rewrite

我知道这里必须有答案,但我无法找到/找到它。

在同一个域中有一个典型的301重定向规则:

Redirect 301 /path/to/strange-url.htm /path/to/new/canonical-url.htm

稍后在htaccess文件中,有一个canonical-url

的重写规则
RewriteRule ^([^/]+)/([^/]+)([^/]+)/([^-]+)-([^.]+)\.htm$ php/page.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [NC,L]

问题是,只要301重定向激活,我的新网址就会变为:

/path/to/new/canonical-url.htm?var1=xxxx&var2=xxxx&var3=xxxx&var4=xxxx&var5=xxxx

如何避免这种情况并仅保留干净的网址:/path/to/new/canonical-url.htm

2 个答案:

答案 0 :(得分:1)

好的,我终于找到了一个有效的解决方案

我将所有Redirect 301规则更改为RewriteRule [R = 301,L],所以:

Redirect 301 /path/to/strange-url.htm /path/to/new/canonical-url.htm

变为

RewriteRule ^/path/to/strange-url.htm http://www.example.com/path/to/new/canonical-url.htm [R=301,L]

此外,我在实际重写之前移动了所有以前的重定向

答案 1 :(得分:0)

似乎你有一个循环,尝试在请求的URI上添加条件,例如:

RewriteCond %{REQUEST_URI} !^php/page.php
RewriteRule ^([^/]+)/([^/]+)([^/]+)/([^-]+)-([^.]+)\.htm?$ php/page.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [NC,L]