.htaccess RewriteRule禁止除文件夹外

时间:2016-01-18 20:56:24

标签: apache .htaccess mod-rewrite httpforbiddenhandler

我在 .htaccess

中有这个规则
>>> lst = [4, 5, 6]
>>> '-'.join(map(str, lst))
'4-5-6'
>>> '-'.join([str(x) for x in lst])
'4-5-6'

我需要禁止所有带起点的文件,没关系。但我需要允许文件夹 .well-known

你是怎么做到的?

非常感谢。

2 个答案:

答案 0 :(得分:1)

你可以先添加另一条规则,只有[L]标志,意思是"如果此规则匹配"则停在这里:

# Match this path and do nothing
RewriteRule /\.well-known|^\.well-known - [L]
# prevents files starting with dot to be viewed by browser
RewriteRule /\.|^\. - [F]

或者您可以使用RewriteCond限定现有规则:

RewriteCond %{REQUEST_URI} ! /\.well-known|^\.well-known
RewriteRule /\.|^\. - [F]

答案 1 :(得分:1)

您可以使用否定前瞻来允许该特定文件夹:

RewriteRule (?:^|/)\.(?!well-known(?:/.*)?$) - [F,NC]