4

我正在使用以下 mod_rewrite 从我网站的顶级目录重定向到子目录shows/

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

重定向执行良好。但是,URL 正在显示重定向,如果您使用 mod_rewrite,我认为它不应该显示重定向。

澄清:指向的浏览器http://www.example.com/被重定向到子目录shows/。但浏览器将 URL 中的重定向显示为http://www.example.com/shows/. 同样,我的理解是,通过使用 mod-rewrite,您可以使重定向不可见,因此用户不知道重定向已经发生。

难道我做错了什么?

4

2 回答 2

6

我现在看到了问题。您正在将 URL 从 重写http://www.example.com/http://www.example.com/shows。由于/shows是目录而不是文件,Apache 在重写后发送尾部斜杠重定向。这是你如何解决它:

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

注意:由于 Apache 之前可能已经发送了301 Moved Permanently标头,因此浏览器会缓存此响应,并且即使您对 .htaccess 文件进行了更改,它也可能会向您显示错误的页面/内容。测试时经常清除浏览器缓存。

于 2011-10-06T07:27:25.043 回答
0

很久以前我也在想同样的问题,所以我决定在谷歌上搜索,我找到了你的问题。我意识到有两个选项“重定向”和“重新映射”。所以我认为这是理解你所问内容的关键。基本上有两种选择

重定向而不更改 url

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

于 2014-08-27T09:13:59.927 回答