完全被.htaccess困住了

时间:2009-07-03 14:05:20

标签: .htaccess mod-rewrite

我正在尝试写出我认为非常简单的规则,但要么我缺少一些非常明显的东西,要么就是这么简单的规则。实际上有两个人看过它,似乎没有人能说出我做错了什么。

我刚将网站迁移到新平台,需要设置从动态网页到特定网址的301重定向。

products.asp?dept=15需要重定向到http://www.example.com/products/collections/gourmet-side-dishes

我发现的所有例子都指向了一些看起来像的东西:

RewriteCond %{query_string} &dept=15
RewriteRule ^/products\.asp$ http://www.example.com/products/collections/gourmet-side-dishes/? [R=301,L]

但是,这不起作用。请帮忙!我需要阻止这些页面进入404。

提前致谢, 塞特

4 个答案:

答案 0 :(得分:1)

您可能需要从重写规则中删除前导斜杠:

RewriteRule ^/products....
# becomes
RewriteRule ^products...

答案 1 :(得分:0)

尝试使用前导符号的条件,例如。

中不存在
RewriteCond %{query_string} dept=15
RewriteRule ^/products\.asp$ http://www.somedomain.com/products/collections/gourmet-side-dishes [R=301,L]

答案 2 :(得分:0)

原来是这两个提示的组合,而且,我很尴尬地说,我的规则的排序。

对我有用的最终规则是:

 RewriteCond %{query_string} dept=15 
 RewriteRule ^products\.asp$ http://www.somedomain.com/products/collections/gourmet-side-dishes? [R=301,L]

答案 3 :(得分:0)

如果您在.htaccess文件中使用规则,则在测试之前删除上下文每目录路径前缀,并在应用规则后添加回来。

RewriteCond %{query_string} &dept=15
RewriteRule ^products\.asp$ http://www.example.com/products/collections/gourmet-side-dishes/? [R=301,L]

有关详细信息,请参阅RewriteRule directive说明中的 Per-directory Rewrites 框。