.htaccess htaccess 301重定向到重写规则

.htaccess htaccess 301重定向到重写规则,.htaccess,redirect,rewrite,.htaccess,Redirect,Rewrite,我知道这肯定有答案,但我找不到 同一域中有一个典型的301重定向规则: Redirect 301 /path/to/strange-url.htm /path/to/new/canonical-url.htm 稍后在htaccess文件中,规范url有一个重写规则 RewriteRule ^([^/]+)/([^/]+)([^/]+)/([^-]+)-([^.]+)\.htm$ php/page.php?var1=$1&var2=$2&var3=$3&var4=$4&a

我知道这肯定有答案,但我找不到

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

Redirect 301 /path/to/strange-url.htm /path/to/new/canonical-url.htm
稍后在htaccess文件中,规范url有一个重写规则

RewriteRule ^([^/]+)/([^/]+)([^/]+)/([^-]+)-([^.]+)\.htm$ php/page.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [NC,L]
问题是,一旦301重定向激活,我的新url就会变成:

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

如何避免这种情况并只维护干净的url:
/path/to/new/canonical url.htm

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

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

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

我将所有重定向301规则更改为重写规则[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]

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

不,这不起作用。我仍然在重定向URL的末尾得到查询字符串。你能提供.htaccess文件的完整内容吗?我不希望。。。它的方式太长的规则列表(超过250k)。我提到的301重定向是540条规则(旧的蹩脚html页面),将在一种新模式下重写