301使用.htaccess重定向不起作用

时间:2013-07-02 11:00:46

标签: apache .htaccess

这是我在.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重定向规则不起作用?
有任何建议吗?

1 个答案:

答案 0 :(得分: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]