Question

I have the following .htaccess-file:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ((^((/)*admin(/)+).*)|(^admin$)) $0 [NS]
    RewriteRule ^((?!\.).)*$ "system/scripts/startPageProcess.php?slug=$0" [NS]
</IfModule>

If theres a URL called starting with "admin/" or being equal to "admin", there should be no redirection. If the URL is differend, startPageProcess.php should be called with the URL as the "slug"-Get-Parameter (for example "asdf" redirects to "system/scripts/startPageProcess.php?slug=asdf"). This works so far.

Now there is the following problem: If I call "admin", there is no redirection - so far, so good - but the URL shown in the browser changes to: "admin/?slug=admin" and I have no idea why.

I'm really not an .htaccess-expert, so I don't know why this happens, how you can fix this, or if you could make the whole thing easier. So please help.

Was it helpful?

Solution

Have your rules like this:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^admin(/.*)?$ - [L]
    RewriteRule ^([^./]+)/?$ system/scripts/startPageProcess.php?slug=$1 [L,QSA]
</IfModule>

OTHER TIPS

You need to add a last rule flag so the admin rule would be

RewriteRule ((^((/)admin(/)+).)|(^admin$)) $0 [NS, L]

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top