我正在尝试使用 .htaccess 阻止对我网站的所有访问,除了我的 IP。
问题是我在 /img/ 中有一些图像用于我的地址电子邮件签名,所以我需要这些是免费的。
谢谢。
起初我有这个:
RewriteCond %{REMOTE_ADDR} !^38\.37\.31\.238$
RewriteCond %{REQUEST_URI} !^/maintenance.php$
RewriteCond %{REQUEST_URI} !^/signature/link-icon.png
RewriteCond %{REQUEST_URI} !^/signature/mail-icon.png
RewriteCond %{REQUEST_URI} !^/signature/profil-picture.png
RewriteCond %{REQUEST_URI} !^/signature/profil.png
RewriteCond %{REQUEST_URI} !^/signature/skype-icon.png
RewriteCond %{REQUEST_URI} !^/signature/tel-icon.png
RewriteRule .* /maintenance.php [L,R=302]
但我不想再重定向到 maintenance.php,只是一个随机的 404 错误或类似的错误。我只想将域用于电子邮件。
返回 403 Forbidden 可能比返回 404 更合乎逻辑,除非您有特定要求?
: RewriteRule .* /maintenance.php [L,R=302]
要发送 403,您基本上只需要将最后一行更改为:
RewriteRule ^ - [F]
或者将标志(第三个)参数更改为
[R=404]
以发送 404。这里不需要L
标志。
虽然我倾向于将其分为两个规则......
# Public URLs
# (Assuming all public URLs are in the "/signature" subdirectory)
RewriteCond %{REQUEST_URI} link-icon\.png$ [OR]
RewriteCond %{REQUEST_URI} mail-icon\.png$ [OR]
RewriteCond %{REQUEST_URI} profil-picture\.png$ [OR]
RewriteCond %{REQUEST_URI} profil\.png$ [OR]
RewriteCond %{REQUEST_URI} skype-icon\.png$ [OR]
RewriteCond %{REQUEST_URI} tel-icon\.png$
RewriteRule ^signature/ - [L]
# Block the reset, except for the specific IP address
RewriteCond %{REMOTE_ADDR} !=203.0.113.111
RewriteRule ^ - [F]
请注意,最后一条规则中的
=
前缀使其成为精确的字符串匹配,而不是正则表达式。