【问题标题】:rewriting single url help重写单个 url 帮助
【发布时间】:2011-01-27 04:07:53
【问题描述】:
我正在尝试重写以下网址:
index.php?route=checkout/cart
到
/cart
使用:
RewriteRule ^index.php?route=checkout/cart$ /basket [L]
但它似乎不起作用。有谁知道我做错了什么?
谢谢
【问题讨论】:
标签:
mod-rewrite
url-rewriting
friendly-url
【解决方案1】:
RewriteRule 只测试URL path。您需要RewriteCond 来测试查询:
RewriteCond %{QUERY_STRING} ^route=checkout/cart$
RewriteRule ^index\.php$ /basket [L,R=301]
附加的R=301 标志将导致带有状态代码301(永久重定向)的外部重定向,而不是内部重定向。
如果你想反过来:
RewriteRule ^basket$ index.php?route=checkout/cart [L]
【解决方案2】:
您需要发送重定向,以便新 URL 反映在浏览器地址栏中。所以,将R 添加到[L]。
RewriteRule ^index.php?route=checkout/cart$ /basket [R,L]
如果您希望搜索机器人忽略“丑陋”的 URL 和/或将其从索引中删除并改用新的,请发送 301 重定向。
RewriteRule ^index.php?route=checkout/cart$ /basket [R=301,L]