如何在上述情况下完成modrewrite:
让我们说网站是:www.real-estate.com
然后我们有第一个mod重写:
RewriteRule ^([a-zA-Z\-]+) cities.php?city_url=$1
所以这将重写为类似的东西:www.real-estate.com/florida
它将列出佛罗里达州的所有房地产。
然后我们添加此规则:
RewriteRule ^([a-zA-Z\-]+)/(.*)+$ details.php?project=$2
这将重写为www.real-estates/florida/project-one
,它将显示该项目的详细信息。
但是,如果我像这样访问城市的链接:www.real-estae.com/florida/
(斜杠最后)它将跳转到第二个mod重写规则,带我到带有空变量的details.php。
解决这个问题的正确解决办法是什么,这样如果用户在城市之后添加斜杠,它仍然会显示该城市中的项目,而不是显示空变量的详细信息页面?
答案 0 :(得分:0)
在玩完之后我发现了他的作品,但我不知道这是否是正确的解决方案:
我取而代之:
RewriteRule ^([a-zA-Z\-]+)/+(.*)$ details.php?project=$2
RewriteRule ^([a-zA-Z\-]+) cities.php?city_url=$1
有了这个:
RewriteRule ^([a-zA-Z\-]+)/([a-zA-Z\-]+) details.php?project=$2
RewriteRule ^([a-zA-Z\-]+) cities.php?city_url=$1
所以我已经更换了(。*)$为什么这样做有效,另一种方式我不知道..也许有人可以解释。
答案 1 :(得分:0)
可能它解决了眼前的问题,但是由于使用了错误的正则表达式并且没有使用锚点$
,您的规则可能仍然匹配超过要求。
对于您的情况,请使用以下规则:
RewriteEngine On
RewriteBase /
RewriteRule ^[a-zA-Z-]+/([a-zA-Z-]+)/?$ details.php?project=$1 [L,QSA]
RewriteRule ^([a-zA-Z-]+)/? cities.php?city_url=$1 [L,QSA]