Question

I am using the following mod_rewrite to redirect from the top directory of my site, to the subdirectory shows/:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^$ shows [L]

The redirect is performing fine. However, the URL is displaying the redirect, which I believe it should not if you use mod_rewrite.

To clarify: A browser pointed towards http://www.example.com/ is redirected to the subdirectory shows/. But the browser displays the redirect in the URL as http://www.example.com/shows/. Again, it is my understanding that by using mod-rewrite, you make the redirect invisible, so the user is not aware the redirect has taken place.

Am I doing something wrong?

Was it helpful?

Solution

I now see the problem. You are rewriting a URL from http://www.example.com/ to http://www.example.com/shows. Since /shows is a directory and not a file, Apache sends a trailing slash redirect after rewriting. Here is How you fix it:

RewriteRule ^$ shows/ [L]
# here -------------^

Note: since Apache might have sent a 301 Moved Permanently header earlier, browsers will cache this response and it might show you wrong page/content even after you make changes to your .htaccess file. Clear browser cache often when you're testing.

OTHER TIPS

I was wondering the same for a long time ago,so I decided to search on google and I found your question. I realised that there is something like two options "Redirect" and "Remapping". So I think here is the key to understand what you were asking. Basically, there are two options

redirection without change the url

RewriteEngine on
RewriteRule ^/foo\.html$ /bar.html [PT]

& and redirection changing the url on the browser.

RewriteEngine on
RewriteRule ^/foo\.html$ bar.html [R]

Anyway, take a look here http://httpd.apache.org/docs/2.2/rewrite/remapping.html

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