我的一行代码使用了mod_rewrite拉起从数据库的结果,例如:mod_rewrite的规则herierarchy
example.com/anytext/itemid
使用以下网址:example.com/item.php?id=itemid
一个简单的重写。不过,我想制定一个优于它的规则。下面我们来看看我的意思:
.htaccess文件例如:
RewriteRule ^products/[^/]+/(.*)$ products/item.php?id=$1 [L]
这个规则告诉example.com/products/anytext/itemid
使用item.php
使用URL的最后部分的“/”后,这是该项目的ID来显示。
但是,我想要一些URL重定向而不是重写。例如:
products/green-dress/4023
成为:
products/green-dress-with-stain/4023
无需重写规则中踢!
现在,我已经在.htaccess中尝试了一个简单的301重定向,但它以某种方式干涉了重写规则。
而不是去
products/green-dress-with-stain/4023
不言而喻:
products/green-dress-with-stain4023?id=4023
见末尾的URL如何得到一个变量?奇怪的!
谢谢, 戴夫
Mod_alias(例如'Redirect'和'RedirectMatch'指令)优先于mod_rewrite。您可以使用它们来确保在.htaccess文件中首先解析并执行它们。文件内的位置是不相关的。 –
当我做“重定向301 /绿色礼服/ 4052 /绿色礼服与污点/ 4052”的URL变成:example.com/green-dress-with-stain/4052?id=4052“...我不明白为什么它在最后添加ID变量......怪异的! –
@faa我的猜测是因为重写规则干扰了重定向规则... –