Reputation: 26167
I'm trying to write a RewriteRule to make a simple url. I want users to be able to type enter
www.example.com/somepage
and have it take them to
www.example.com/abc/somepage.php
How can this be done in .htaccess?
I've tried these to no avail:
RewriteRule ^somepage$ abc/somepage.php [L]
RewriteRule ^/somepage$ /abc/somepage.php [L]
What am I doing wrong?
Edit: nginx can also handle rewrites in its configuration files (and I think is actually preferred), which was my case (see my answer below). HTH
Upvotes: 1
Views: 131
Reputation: 26167
Our nginx server was utilizing .htaccess files (as I implemented rewrites there before), but now it is handling the rewrites in its configuration (.conf) files (which is the recommended method).
I do not have permission to modify the .conf files, so I won't post any untested code.. Hope this helps somebody!
Upvotes: 0
Reputation: 13169
If you want the user's web browser to be redirected to your PHP page then you need the R=301
flag at the end of the RewriteRule.
But if you want the request to be silently rewritten (so that Apache knows where to find the resource, but the user's web browser just sees the "clean" URL) then you don't want the `R' flag.
Try the following:
RewriteRule ^somepage$ /abc/somepage.php
This will only rewrite a request for /somepage so that Apache fetches the content from /abc/somepage.php instead.
Upvotes: 1