使用多个参数

时间:2017-01-30 12:12:27

标签: .htaccess mod-rewrite

我正在使用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]

但仍然无法正常工作。抱歉,如果我把它复杂化了。提前谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题不是很清楚,但我假设您希望使用b而不是BOOTS将传入的浏览器请求重定向到网址,同时保留所请求的其余内容URL原样......

为此尝试类似的事情:

SHOE

该规则应放在可能的一系列重写规则的开头。如果您使用的是旧的apache http服务器,则可能必须使用RewriteEngine on RewriteRule ^/?SHOE(.*)$ /BOOTS$1 [R=301,END] 标志而不是L。这也意味着您可能需要采取其他措施来防止无休止的重写循环。

一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用动态配置文件(" END")。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。