0

我知道这一定有一个答案,但我无法找到/找到它。

同域有一个典型的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

我怎样才能避免这种情况并只维护干净的 url: /path/to/new/canonical-url.htm

4

2 回答 2

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]

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

于 2013-02-06T15:06:15.650 回答
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]
于 2013-02-06T08:26:40.877 回答