2013-02-06 70 views
0

我知道这必须有一个答案在这里的某处,但我无法找到/找到它。htaccess 301重定向到一个重写规则

有同一个域中的一个典型的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重定向激活时,我的新网址变为:

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

我该如何避免这种情况和主要只有干净的网址:/path/to/new/canonical-url.htm

回答

1

好,我终于找到一个可行的解决方案

我改变了所有重定向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] 

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

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] 
+0

不行,这没有奏效。我仍然在重定向url的末尾得到查询字符串 – andrew

+0

您能否提供完整的.htaccess文件内容? – vmeln

+0

我宁愿不......它的方式太长规则列表(超过250k)。我提到的301重定向是540条规则(旧的蹩脚的html页面),要在一种新模式下重写 – andrew