.htaccess 如何阻止访问除剧目以外的网站?

qrjkbowd  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(107)

我试图阻止所有访问我的网站与.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错误或类似的东西。我只想用这个域名来发邮件。

weylhg0b

weylhg0b1#

除非您有特定的要求,否则返回403 Forbidden而不是404可能更符合逻辑。

:
RewriteRule .* /maintenance.php [L,R=302]

要发送403,您基本上只需要将最后一行更改为:

RewriteRule ^ - [F]

或者将flags(3rd)参数更改为[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]

请注意,最后一条规则中的= preifx使其成为精确字符串匹配,而不是正则表达式。

相关问题