Reputation: 1908
I got my basic redirects work with the mod_rewrite
module. When requesting pages e.g. localhost/home
it's correctly redirecting to localhost/index.php?page=home
, but I have a problem with exceptions.
I created a folder api
where I store files by category e.g. api/auth/register.php
and api/customer/create.php
. I tried to make rewrite rule that contains 2 params (in this example auth and customer) so basically it just drops the .php
off from the url.
The rule that I made is following
RewriteRule ^api/(.*)/(.*)/?$ api/$1/$2.php [L]
After adding that line to my .htaccess, problems started to occur. For example my .css
and .js
files started to redirect. So maybe I need to make some exeption for the apis? Have you some other ideas to improve my rewrite rules?
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/(.*)/(.*)/?$ api/$1/$2.php [L] # problems started to occur after adding this line
RewriteRule (.*) index.php?page=$1 [L,QSA]
Thanks in advance.
Upvotes: 0
Views: 216
Reputation: 10849
RewriteCond
will affect only the first following RewriteRule
so you need the keep them next to your initial Rule, and move the added one above them (with its own conditions).
Also, your /api
rule is not strict enough ((.*)
will pick anything, including the slashes), which might not matter in you case, but still. I sugest you try with this:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/([^/]*)/([^/]*)/?$ api/$1/$2.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?page=$1 [L,QSA]
Upvotes: 1