当访问者试图访问.php
URL时,我想将访问者发送到自定义404错误页,但有一些特定的例外:
例外情况如下:
(maybe-something/)/allowed-file.php
我当前的.htaccess
文件阻止访问所有.php
文件:
ErrorDocument 404 /error404.php
ErrorDocument 403 /error404.php
Options -MultiViews
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
# Force WWW & SSL
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
##.php envia a 404
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.php - [F,L]
如何添加几十个特定的例外?
1条答案
按热度按时间gudnpqoy1#
将此更改为:
!
前缀否定表达式。因此,当请求的URL * 不是 */allowed-file.php
或/<anything>/allowed-file.php
时,第二个条件成功。RewriteCond
指令的第二个参数(在!
前缀之后)是正则表达式(默认情况下)。若要添加更多例外;添加更多 * 条件 *(
RewriteCond
指令)。请注意,我删除了
RewriteRule
pattern 中的捕获组,因为它没有被使用。并且在使用F
标志时不需要L
标志(它是隐含的)。但是,此规则在配置文件中的位置不正确。它应该紧跟在
RewriteEngine
指令之后,并在规范重定向 * 之前 *。此外,该杂散的
RewriteCond %{SERVER_PORT} 80
指令(紧跟在RewriteEngine
指令之后)是多余的,应该删除(以避免以后出现意外错误)。参考编号: