我使用以下mod_rewrite从我的网站的顶级目录重定向到子目录shows/
:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^$ shows [L]
重定向表现良好。但是,URL是显示重定向,我相信如果你使用mod_rewrite它不应该。
澄清:指向http://www.example.com/
的浏览器会重定向到子目录shows/
。但浏览器会在网址中将重定向显示为http://www.example.com/shows/
。同样,我的理解是,通过使用mod-rewrite,您可以使重定向不可见,因此用户不会意识到重定向已经发生。
我做错了吗?
答案 0 :(得分:6)
我现在看到了问题。您正在重写从http://www.example.com/
到http://www.example.com/shows
的网址。由于/shows
是目录而不是文件,因此Apache在重写后会发送尾部斜杠重定向。以下是如何修复它:
RewriteRule ^$ shows/ [L]
# here -------------^
注意:由于Apache可能早先发送了 301 Moved Permanently 标头,因此浏览器会缓存此响应,即使您对.htaccess文件进行了更改,它也可能显示错误的页面/内容。在测试时经常清除浏览器缓存。
答案 1 :(得分:0)
我很久以前就想知道这一点,所以我决定在google上搜索,然后我找到了你的问题。我意识到有两个选项" Redirect"和#34;重新映射"。所以我认为这是理解你所要求的关键。基本上,有两个选项
重定向而不更改网址
RewriteEngine on
RewriteRule ^/foo\.html$ /bar.html [PT]
&安培;和重定向更改浏览器上的URL。
RewriteEngine on
RewriteRule ^/foo\.html$ bar.html [R]
无论如何,看看这里 http://httpd.apache.org/docs/2.2/rewrite/remapping.html