【发布时间】:2017-11-23 18:18:08
【问题描述】:
我将每个请求(html、css、js、...)透明地重定向到子文件夹 _site(我的静态 Jekyll 站点所在的位置...)
RewriteCond %{REQUEST_URI} !^/_site.*
RewriteRule ^(.*)$ _site/$1 [L]
这基本上有效。虽然我觉得很奇怪,但我必须使用重写条件来阻止迭代:
AH00124:由于可能的配置错误,请求超出了 10 个内部重定向的限制。使用 'LimitInternalRecursion' 来增加限制,如果...
毕竟我用的是[L] for last,怎么会出现递归呢?!?
如果我试图阻止对站点文件夹的直接访问(如 example.com/_site/favicon.ico),请在第一行前面添加:
RewriteRule ^_site.* - [R=403,NC,L]
RewriteCond %{REQUEST_URI} !^/_site.*
RewriteRule ^(.*)$ _site/$1 [L]
然后,在 合法 访问 (example.com/favicon.ico) 上我也得到了 403!
显然,每个请求都需要另一轮。合法的,然后在“第 2 轮”中匹配禁止规则。那么,这里有什么问题?
为什么“last”不意味着“last”?(是否发生了一些变化,即在 Apache 2.2 和 2.4 之间?因为.htaccess 那里发生了很多变化......)
【问题讨论】:
标签: apache .htaccess redirect mod-rewrite