我在 .htaccess 文件中有以下内容:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_FILENAME} !admin\.php$
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^.*$ - [G]
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
应该做的是,如果文件是有效文件,则不应该发生任何事情(文件应该正常处理) - 这可以工作。
接下来,如果文件具有 .php 扩展名,但不是 admin.php,那么它应该返回 410 Gone 状态。这不起作用 - 它总是转到下一个指令,并且第二个块被忽略。
示例 URL:http://<my site>/file.php
- 不返回 410,转到最后一个指令。
为什么会这样?
(另外,我不认为 stackoverflow 是这个问题的网站,但我想不出是什么:/)
编辑:我可能应该指出,这在我的 Windows localhost 上运行良好,但在我的 live linux 服务器上却不行。
EDIT2:它仍然无法在我的直播框中使用转义点。如果我将第二个块移到第一个块之上,一切都消失了。