我正在使用htaccess重写以获取干净的URL:
RewriteRule ^([^/]+)/?$ category.php?cat=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ subcategory.php?cat=$1&subcat=$2 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ item.php?cat=$1&subcat=$2&item=$3 [L,QSA]
我得到了干净的网址: - domain.com/SHOE/MEN/ITEM-NAME
现在我希望更改网址为: - 1. domain.com/BOOTS/MEN/ITEM-NAME 以及父级别的类似更改,例如:2。domain.com/BOOTS/MEN和3. domain.com/BOOTS
我尝试了另外一行
RewriteRule ^SHOE/.*$ /BOOTS/$1 [L,R]
但仍然无法正常工作。抱歉,如果我把它复杂化了。提前谢谢你的帮助。
答案 0 :(得分:0)
您的问题不是很清楚,但我假设您希望使用b
而不是BOOTS
将传入的浏览器请求重定向到网址,同时保留所请求的其余内容URL原样......
为此尝试类似的事情:
SHOE
该规则应放在可能的一系列重写规则的开头。如果您使用的是旧的apache http服务器,则可能必须使用RewriteEngine on
RewriteRule ^/?SHOE(.*)$ /BOOTS$1 [R=301,END]
标志而不是L
。这也意味着您可能需要采取其他措施来防止无休止的重写循环。
一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用动态配置文件(" END
")。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。