我正在重写所有对名为public 的文件夹的请求,而在我的根目录中使用.htaccess更改网址。现在,如果我转到http://sitename.com/js,那么它会重定向到http://sitename.com/public/js。但是,如果我转到http://sitename.com/js/,那么它可以正常工作,而无需更改网址。有人可以解释为什么并帮助我吗?
root 目录中的.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1 [L]
答案 0 :(得分:1)
这是因为mod_dir
在mod_rewrite
之后运行并添加了一个尾部斜杠。
你的规则如下:
RewriteCond %{THE_REQUEST} /public/(css|js) [NC]
RewriteRule ^ - [L,R=401]
RewriteCond %{DOCUMENT_ROOT}/public/$1/ !-d [NC]
RewriteRule ^((?!public/).*?)/?$ public/$1 [L,NC]
RewriteCond %{DOCUMENT_ROOT}/public/$1 -d [NC]
RewriteRule ^((?!public/).+?)/?$ public/$1/ [L,NC]