首先,这是我的目录结构
/localhost/p/
.htaccess
/localhost/p/inc/
style.css
我在/localhost/p/.htaccess
Options -MultiViews +FollowSymLinks
RewriteEngine On
RewriteBase /p/
RewriteCond %{REQUEST_FILENAME} ^(.+)/([^/]+)$
RewriteCond %1/inc/%2 -f
RewriteRule ([^/]+)$ inc/$1 [L]
RewriteRule ^(.+)$ index.php [QSA,L]
它不允许我访问localhost/p/style.css
的文件,但它会让我访问index.php
这是日志
[perdir D:/p/] strip per-dir prefix: D:/p/style.css -> style.css
[perdir D:/p/] applying pattern '([^/]+)$' to uri 'style.css'
[perdir D:/p/] RewriteCond: input='D:/p/style.css' pattern='^(.+)/([^/]+)$' => matched
[perdir D:/p/] RewriteCond: input='D:/p/inc/style.css' pattern='-f' => matched
[perdir D:/p/] rewrite 'style.css' -> 'inc/style.css'
[perdir D:/p/] add per-dir prefix: inc/style.css -> D:/p/inc/style.css
// I don't know how to stop the .htaccess here, and just get the file
// instead go with [INTERNAL REDIRECT]
[perdir D:/p/] trying to replace prefix D:/p/ with /p/
strip matching prefix: D:/p/inc/style.css -> inc/style.css
add subst prefix: inc/style.css -> /p/inc/style.css
[perdir D:/p/] internal redirect with /p/inc/style.css [INTERNAL REDIRECT]
[perdir D:/p/] strip per-dir prefix: D:/p/inc/style.css -> inc/style.css
[perdir D:/p/] applying pattern '([^/]+)$' to uri 'inc/style.css'
[perdir D:/p/] RewriteCond: input='D:/p/inc/style.css' pattern='^(.+)/([^/]+)$' => matched
[perdir D:/p/] RewriteCond: input='D:/p/inc/inc/style.css' pattern='-f' => not-matched
// Of course it will never match, it should be D:/p/inc/style.css
...
...
...
谢谢,
答案 0 :(得分:4)
使用此RewriteCond允许不超过1个内部重定向:
## prevent looping from internal redirects
RewriteCond %{ENV:REDIRECT_STATUS} !200