2012-11-20 103 views
0

我目前使用的mod_rewrite规则变量的数量:使用mod_rewrite重定向到不同的页面取决于

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

这工作得很好,使/page负载page.php?slug=page

不过,我想网址:

/cat/page 

加载

page.php?slug=page 

和URL

/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

请描述更多应该如何重定向工作...我没有看到干净的算法来实现。给我更多的例子或者用伪语言自己描述算法 –

+0

@KamilŠrot我试着添加更多的例子。不知道这是你想要的,但我希望它可以帮助... – samiles

+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] 

我不知道有关的参数,以名和page.php作为你的例子是不一致的(有时它是slug和有时cat?)无论如何这是小问题。

描述:RewriteCond请确保page.phpcat.php不会被重写。然后有正则表达式匹配一个或两个级别的虚拟目录,将请求传递给正确的PHP脚本。

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

+0

谢谢,这个工程,虽然cat.php和page.php是错误的规则。我换了他们,它的作品。谢谢! (而且,它应该总是slu and而不是猫 - 我输错了,对不起!) – samiles

+0

哦,对不起 - 我的错!我修好了它... –

相关问题