I've been trying to wrap my head around .htaccess for most of the weekend, but I keep stumbling; I can get the server to work with one set of rules, but no more than one at a time.
My application is made up of several pages:
- The Homepage pulls in content from the Detail page, (as well as content that the Detail page doesn't include), with an optional query string argument; e.g.
?s=item-name
- The Detail page pulls in content with an optional query string argument (the same argument as the homepage; e.g.
?s=item-name
- this would refer to exactly the same content) - A Collection page
- A Related page
Each of these pages is a php file in the document root (index.php, detail.php, collection.php, related php).
What I would like to achieve:
- The user should be able to go to
mydomain.com/detail/
ormydomain.com/detail
(so allow trailing slashes) instead ofmydomain.com/details.php
- If present, the query string argument (
?s=item-name
) should be entered after the page's trailing slash (somydomain.com/item-name
instead ofmydomain.com/?s=item-name
;mydomain.com/detail/item-name
instead ofmydomain.com/detail.php?s=item-name
. This would be the case for all pages, so setting the rule on one page at a time seems rather cumbersome...
This is what my .htaccess file looks like at present, after much fiddling:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L]
</IfModule>
This allows the homepage to pull in the correct content, and I'm sure it's not too far off allowing any page to do the same, but I can't quite fathom it.
Can anyone help?