Apache mod_rewrite正在重定向浏览器,而不是重写

Apache mod_rewrite正在重定向浏览器,而不是重写,apache,.htaccess,mod-rewrite,url-rewriting,url-redirection,Apache,.htaccess,Mod Rewrite,Url Rewriting,Url Redirection,我正在使用以下mod_rewrite从我的站点的顶部目录重定向到子目录shows/: Options +FollowSymlinks RewriteEngine On RewriteRule ^$ shows [L] 重定向执行得很好。但是,URL显示了重定向,我认为如果使用mod_rewrite,就不应该显示重定向 澄清:指向http://www.example.com/被重定向到子目录显示/。但是浏览器在URL中显示重定向为http://www.example.com/shows/。同样,

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

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^$ shows [L]
重定向执行得很好。但是,URL显示了重定向,我认为如果使用mod_rewrite,就不应该显示重定向

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


我做错什么了吗?

我现在明白了问题所在。您正在从
http://www.example.com/
http://www.example.com/shows
。由于
/shows
是一个目录而不是一个文件,Apache在重写后发送一个尾部斜杠重定向。以下是如何修复它:

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

注意:由于Apache可能在早些时候发送了一个301 Moved Permanently头,浏览器将缓存此响应,即使在您更改.htaccess文件后,它也可能显示错误的页面/内容。测试时经常清除浏览器缓存。

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

重定向而不更改url

RewriteEngine on
RewriteRule ^/foo\.html$ /bar.html [PT]
&和重定向更改浏览器上的url

RewriteEngine on
RewriteRule ^/foo\.html$ bar.html [R]
不管怎样,看看这里

Naaay没有。它完全改变了被认为是根文件夹的内容。页面上所有链接的文件都未链接。感谢您的尝试。它在我的系统上正常工作:
localhost/
显示了
localhost/shows/
中的内容,而没有301重定向或地址栏中的地址更改。至于断开的链接:你应该期待它们,并找到解决办法。我没有建立网站,而且所有内容都是相对于根链接的,因此更改被认为是根的内容将是解决此问题的更多工作。我可以看到被重定向到的目录,事实上,我注意到之前浏览器缓存使用了不同版本的代码。不管怎样,
RewriteRule^$shows/[L]#这里----------------^
就是我用什么来替换我的代码?我只是从来没有见过像这样的代码----------------^,所以我想知道我是否应该用其他代码来代替它。。。抱歉太晚了。在.htaccess和其他apache配置文件中,以
#
开头的行是注释。你不必复制那一行。