Reputation: 3900
I am currently using the mod_rewrite rule:
RewriteRule ^(.+)/?$ page.php?slug=$1 [L]
This works fine to make /page
load page.php?slug=page
.
However, I want to URL:
/cat/page
to load
page.php?slug=page
And the URL
/cat
to load the page
cat.php?slug=cat
Is this possible? I could do it on one page.php and use an if to determine which page it should be, however as the code for the category page and the page page is so different, I'd much rather keep them separate.
Thank you,
Sam
Update: More examples, as requested.
/food/pizza
loads page.php?slug=pizza
/food
loads cat.php?slug=pizza
/animals/pigs
loads page.php?slug=pigs
/animals
loads cat.php?slug=animals
Upvotes: 0
Views: 102
Reputation: 2221
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]
I'm not sure about the names of parameters to cat.php
and page.php
as your examples are not consistent (sometimes it's slug
and sometimes cat
?) Anyhow it's minor problem.
Description: the RewriteCond
make sure page.php
and cat.php
will not be rewritten. Then there are regular expressions matching one or two levels of virtual directories passing the request to correct PHP script.
EDIT: not. it's passing it to really the correct script :-)
Upvotes: 2