我目前正在研究如何使用Mod重写修改php中的URL。
典型的网址可能如下所示:
http://www.fitness.com/find_a_pt/?county=&constituency=211&gender=&action=search
现在在上面的例子中,只选择了一个选区。没有指定县或性别。
现在上述选区指的是'达特福德'。
如果网址为:
,那就好了http://www.fitness.com/find_a_pt/dartford
现在增加的复杂性是性别可能是:
1)未选中 - 根据上面的网址
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
所以网址需要阅读:
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重写这一点,如果是这样,有人可以提供一个例子供我工作。
提前感谢您的帮助。
答案 0 :(得分: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逻辑。
您可以使用$_SERVER['REQUEST_URI']
获取请求,并执行任何操作。
很高兴有一个带有正则表达式规则的Routing类来解析uri。 查看示例here并阅读 像Zend,Code Igniter等大型框架如何做到这一点。 (顺便说一下,我提供的重写规则来自Zend Framework)