根据变量的数量,使用mod_rewrite重定向到不同的页面

时间:2012-11-20 17:24:30

标签: php mod-rewrite

我目前正在使用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

1 个答案:

答案 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.phppage.php的参数名称,因为您的示例不一致(有时它是slug,有时是cat?)无论如何它是小问题。

说明:RewriteCond确保page.phpcat.php不会被重写。然后有正则表达式匹配一个或两个级别的虚拟目录,通过请求来纠正PHP脚本。

编辑:没有。它将它传递给真正正确的脚本: - )