0

我目前正在使用 mod_rewrite 规则:

RewriteRule ^(.+)/?$ page.php?slug=$1 [L]

这可以很好地制作/pageload 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

4

1 回答 1

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.phpcat.php然后有正则表达式匹配一个或两个级别的虚拟目录传递请求以纠正 PHP 脚本。

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

于 2012-11-20T20:59:30.557 回答