.htaccess 为漂亮的url修改Modrewrite

.htaccess 为漂亮的url修改Modrewrite,.htaccess,mod-rewrite,url-rewriting,pretty-urls,.htaccess,Mod Rewrite,Url Rewriting,Pretty Urls,在上述情况下,如何进行modrewrite: 假设我们的网站是:www.real-estate.com 然后我们有了第一次修改: RewriteRule ^([a-zA-Z\-]+) cities.php?city_url=$1 因此,这将改写为类似的内容:www.real-estate.com/florida,它将列出佛罗里达州的所有房地产 然后我们添加此规则: RewriteRule ^([a-zA-Z\-]+)/(.*)+$ details.php?project=$2 这将重写到ww

在上述情况下,如何进行modrewrite:

假设我们的网站是:
www.real-estate.com

然后我们有了第一次修改:

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 rewrite规则,带一个空变量进入details.php


解决此问题的正确解决方案是什么,这样,如果用户在城市后添加斜线,它仍将显示该城市中的项目,而不是带有空var的详细信息页面?

在玩过之后,我发现他的作品,但我不知道这是否是正确的解决方案:

我替换了这个:

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

所以我已经替换了(.*)为什么这个可以工作,另一种方式不行我不知道。。也许有人可以解释。

可能它解决了眼前的问题,但是由于使用了错误的正则表达式,并且没有使用锚定
$
,因此您的规则可能仍然比要求的匹配更多

对于您的情况,请使用以下规则:

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]