我是使用RewriteRule的新手,所以我可能会丢失一些明显的东西,但是我有一个PHP脚本,它可以像下面这样使用URLvariables:
{baseurl}properties.php?prop=Property-Name
我想创buildRewriteRules,以便任何在这个脚本名称/variables组合中input的人将其URL改写为:
{baseurl}/properties/Property-Name
以及确保任何谁在types的平面链接url,实际上调用正确的variables名称和值的脚本。
我一直在指这个链接 ,我发现相关的线程:
Mod_rewrite平面链接
Mod_rewrite麻烦:想从?=直接链接到一个平面链接,似乎没有任何工作
但是,我显然做错了,因为我无法得到这个URL以我想要的方式工作。 我目前使用下面的代码,除了重写URL以包含www,以及将index.php的请求redirect到站点根目录之外,它似乎什么都不做
RewriteEngine ON RewriteCond %{HTTP_HOST} ^baseurl.com$ [NC] RewriteRule ^(.*)$ http://www.baseurl.com/$1 [R=301,L] RewriteRule ^index.php / [R=301,L] RewriteRule ^properties/([0-9A-Za-z]+)/$ /properties.php?prop=$1
这个问题显然是最后一个RewriteRule,假设没有任何影响。 再次,我可能做一些荒谬的事情。 有人能解释我在做什么错吗?
谢谢你的帮助。
匆匆一瞥,似乎你忘了在正则表达式中包含短划线,并且包含了尾部的斜线。 用这个代替:
RewriteRule ^properties/([0-9A-Za-z-]+)$ /properties.php?prop=$1
如果你看看你的规则^properties/([0-9A-Za-z]+)/$
你会发现它需要以正斜杠结束。 你可以删除它,或者使其成为可选项,例如^properties/([0-9A-Za-z]+)/?$
。