0

我目前正在研究如何使用 Mod rewrite 修改 php 中的 URL。

典型的 URL 可能如下所示:

http://www.fitness.com/find_a_pt/?county=&constituency=211&gender=&action=search

现在在上面的例子中只选择了一个选区。未指定县或性别。

现在上述选区指的是“达特福德”。

因此,如果 URL 显示为:

http://www.fitness.com/find_a_pt/dartford

现在增加的复杂性是性别可能是:

1) 未选择 - 根据上面的 URL

2) 男性

http://www.ego3fitness.com/find_a_pt/?county=&constituency=211&gender=1&action=search

3) 女性

http://www.ego3fitness.com/find_a_pt/?county=&constituency=211&gender=&actiom=search

因此,URL 需要阅读:

1) http://www.fitness.com/find_a_pt/dartford

2) http://www.fitness.com/find_a_pt/dartford/male

3) http://www.fitness.com/find_a_pt/dartford/female

首先,是否有可能通过 URL 重写来做到这一点,如果可以,有人可以提供一个示例供我使用。

提前感谢您的帮助。

4

1 回答 1

1

我总是使用相同的 mode_rewrite 规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

有了这个规则,一切都被转发到 index.php。所以你可以自由地用 PHP 实现每一个 url 逻辑。

您可以获取请求 uri$_SERVER['REQUEST_URI']并做任何您想做的事情。

很高兴有一个带有正则表达式规则的路由类来解析 uri。在这里查看一个示例,并阅读 Zend、Code Igniter 等大型框架如何做到这一点。(顺便说一下,我提供的重写规则来自 Zend Framework)

于 2013-02-01T00:09:51.990 回答