0

在上述情况下如何进行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。

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

4

2 回答 2

0

可能它解决了眼前的问题,但由于使用了错误的正则表达式而不使用 anchor ,您的规则可能仍然比要求的更多$

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

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]

Apache mod_rewrite 简介

于 2014-05-09T14:09:36.773 回答
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

所以我已经替换了 (.*)$ 为什么这行得通,而我不知道其他方式。也许有人可以解释一下。

于 2014-05-09T12:02:03.603 回答