重写规则以隐藏文件夹,如果不使用斜线,则无法正常工作
我有一个奇怪的Apache Apache mod_rewrite问题。 我需要隐藏用户的子目录,但将每个请求重定向到该子目录。 我在stackoverflow上发现了几个非常类似的问题,但没有什么合适的,所以我决定发布一个新问题。
我的.htaccess看起来像这样:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)?$ foo/$1 [QSA,L]
文档根目录仅包含以下文件夹/文件:
/foo/bar/index.html
我现在预计example.com/bar和example.com/bar/会向我显示index.html的内容。
取而代之的是example.com/bar/向我显示预期内容,但example.com/bar将301重定向到example.com/bar/foo/ an,然后显示内容。 我真的不明白为什么在这种情况下会有301重定向。
当我把这东西
RewriteCond %{REQUEST_URI} !^[^.]*/$ RewriteCond %{REQUEST_URI} !^[^.]*.html$ RewriteCond %{REQUEST_URI} !^[^.]*.php$ RewriteRule ^(.*)$ $1/ [QSA,L]
在该规则的基础上,它似乎工作,但这将需要我列出每个使用的文件扩展名...
有没有其他方式可以省略重定向,文件夹“栏”永远不会被外部用户看到。
提前致谢!
第一个重写规则是从/ foo /(。)重定向到($ 1),第二个从(。)重定向到$ 1。
只是想法,这还没有经过测试。
迟到总比不到好...
得到它与一个简单的RewriteRule工作,它附加一个/到每个没有的网址。
# only directories
RewriteCond %{REQUEST_FILENAME} !-f
# exclude there directories
RewriteCond %{REQUEST_URI} !^/excluded-dirs
# exclude these extensions
RewriteCond %{REQUEST_URI} !.excluded-extension$
# exclude request that already have a /
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
链接地址: http://www.djcxy.com/p/36535.html
上一篇: Rewrite rule to hide folder, doesn't work right without trailing slash