我正在尝试写出我认为非常简单的规则,但要么我缺少一些非常明显的东西,要么就是这么简单的规则。实际上有两个人看过它,似乎没有人能说出我做错了什么。
我刚将网站迁移到新平台,需要设置从动态网页到特定网址的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。
提前致谢, 塞特
答案 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 框。