2013-07-02 55 views
1

这是我在.htaccess文件规则:301重定向使用的.htaccess不起作用

Redirect 301 /George-Nelson-Bench-CT3005-EDI6.htm?categoryId=-1 http://www.mydomain.com/proddetail.php?prod=George_Nelson_Bench 

但是,这显示在我的网站404错误。

的.htaccess文件的一些其他代码:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

一些其他301重定向其正常工作:

Redirect 301 /Modern-Classics_c8.htm http://www.mydomain.com/categories.php?cat=10 
Redirect 301 /Sofas_c34.htm http://www.mydomain.com/products.php?cat=25 
Redirect 301 /Bedroom_c2.htm http://www.mydomain.com/categories.php?cat=7 

那么,为什么第301重定向规则不工作?
有什么建议吗?

+0

http://httpd.apache.org/docs/2.2/en/mod/mod_alias.html#redirect:'语法:Redirect [status] URL路径URL ... ...这里的重要部分:URL _path_ – CBroe

+0

@CBroe是的。规则中_URL-path_是正确的。没有? – Debiprasad

+1

查询字符串是_not_ URL路径的一部分。 – CBroe

回答

1

由于您无论如何都使用mod_rewrite更好地将基于mod_alias的代码替换为更加强大和灵活的mod_rewrite。

您首先重定向规则不起作用,因为您正在使用查询参数。将此规则替换为:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+George-Nelson-Bench-CT3005-EDI6\.htm\?categoryId=-1\s [NC] 
RewriteRule^/proddetail.php?prod=George_Nelson_Bench? [R=301,L] 
+0

谢谢你指出查询字符串在这里产生问题。我删除它,现在它工作正常。我没有使用mod_rewrite。谢谢。 – Debiprasad

+0

不客气,很高兴你的工作。 – anubhava