我目前正在使用mod_rewrite规则:
RewriteRule ^(.+)/?$ page.php?slug=$1 [L]
这可以使/page
加载page.php?slug=page
。
但是,我想要网址:
/cat/page
加载
page.php?slug=page
以及网址
/cat
加载页面
cat.php?slug=cat
这可能吗?我可以在一个page.php上执行它并使用if来确定它应该是哪个页面,但是由于类别页面和页面页面的代码是如此不同,我更愿意将它们分开。
谢谢,
萨姆
更新:根据要求提供更多示例。
/food/pizza
加载page.php?slug=pizza
/food
加载cat.php?slug=pizza
/animals/pigs
加载page.php?slug=pigs
/animals
加载cat.php?slug=animals
答案 0 :(得分:2)
RewriteEngine On
RewriteCond %{REQUEST_URI} !=page.php
RewriteCond %{REQUEST_URI} !=cat.php
RewriteRule ^([^/]+)/([^/]+)/?$ cat.php?slug=$2 [L]
RewriteCond %{REQUEST_URI} !=page.php
RewriteCond %{REQUEST_URI} !=cat.php
RewriteRule ^([^/]+)/?$ page.php?slug=$1 [L]
我不确定cat.php
和page.php
的参数名称,因为您的示例不一致(有时它是slug
,有时是cat
?)无论如何它是小问题。
说明:RewriteCond
确保page.php
和cat.php
不会被重写。然后有正则表达式匹配一个或两个级别的虚拟目录,通过请求来纠正PHP脚本。