Staffan Estberg
Staffan Estberg

Reputation: 7035

htaccess with specific folder exception

I've set up an htaccess file in order to create a small routing structure where urls redirect to index.php. I want to add an exception where if the user types in "/admin" and anything after, the url instead redirects to admin.php.

htaccess -

RewriteEngine On
RewriteBase /
RewriteRule ^admin/?(.*)$ admin.php?page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Example: http://mysite.com/admin/settings/ should lead to admin.php?page=settings, while http://mysite.com/about/ should lead to index.php (not using any parameters here). Regexp is really not my cup of tea, especially when there are multiple conditions to consider. Ideas?

Edit: ^admin/([^/]*)/? solved it.

Upvotes: 1

Views: 2488

Answers (1)

Felipe Alameda A
Felipe Alameda A

Reputation: 11809

You may try this in one .htaccess file in root directory:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}   !admin\.php    [NC]
RewriteRule ^admin/([^/]*)/? /admin.php?page=$1  [NC,L]

RewriteCond %{REQUEST_URI}  !/admin/        [NC]
RewriteRule .*              /index.php      [NC,L]

For permanent redirection, replace [NC],L] with [R=301,NC,L]

Upvotes: 1

Related Questions