我想将所有请求重定向到我的服务器(/ app)上的某个路径到/ app / app_site的子目录。遵循重写规则可以完成“http://localhost/app/somepage.htm”之类的请求:
RewriteCond %{REQUEST_URI} !^/app/app_site.*$
RewriteCond %{REQUEST_URI} !^/app_site.*$
RewriteRule ^/app(.*) /app/app_site$1 [L,PT]
这会生成正确的页面,同时保留URL。此外,“http://localhost/app/”将在/app/app_site/index.html上获取索引页,同时保留网址“http://localhost/app/”。
但是,当我输入“http://localhost/app”时,会发生以下事情:
我差不多了,但是想在所有情况下都保留URL(也就是没有尾随斜线的那些)。任何人都知道如何做到这一点?谢谢!
答案 0 :(得分:1)
这是启用了DirectorySlash
的预期行为,因为您已经重写为缺少尾部斜杠的目录,mod_dir
在您使用{{1}重写URL后执行此清理}}
最简单的解决方案是重写URL,使其始终至少与斜杠终止的目录路径匹配,如下所示:
mod_rewrite
这可以防止RewriteCond %{REQUEST_URI} !^/app/app_site.*$
RewriteCond %{REQUEST_URI} !^/app_site.*$
RewriteRule ^/app/?(.*)$ /app/app_site/$1 [L,PT]
必须添加尾部斜杠,从而避免外部重定向到您现在遇到的mod_dir
。