我试图使用htaccess
来阻止访问我的网站,除非这些请求是指向特定的URI,但仅限于从某个子域访问时。阻止从一个子域访问除htaccess以外的一个URI
本质上,我有一些子域,我用它来解决浏览器请求限制,以加快页面的加载,并有很多图像。我已经测试过,并且这个工作正常,阻止浏览器阻止请求,直到其他人完成。
我想实现的是阻止从这些子域访问站点的其余部分,因此它们只能访问从/images
开始的URI。这个想法是为了避免我的页面或子域名重复的URL在Google中被意外地编入索引。
尝试,因为我有,我不能得到它的权利,这里是我到目前为止有:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Prevent access to anything but the /images URI from subdomains
RewriteCond %{HTTP_HOST} ^cdn[1-9]\.domain.localhost$ [NC]
RewriteRule !^/images.* - [R=404]
</IfModule>
的URI我想的子域访问:
domain.localhost /images/(products|retailers)/400/400/filename.jpg
正如你可能已经猜到了,是不是一个物理文件夹结构,它的我Laravel的PHP应用程序内的路线。
根据我的理解,底部规则应该说“如果请求来自匹配域,并且请求URI不以/images
重定向到404错误开始,但因为它不起作用,我必须离得很远标志。我相信这个问题可能是由于规则的顺序,但我不能确定。
有什么建议?
值得关注的是超越一切的底线规则是必需的,用于Laravel。 – AJReading
'%{HTTP_HOST}'匹配当前服务器的(虚拟)主机名,而不是引用者/客户端的主机名。 – Kenney
这应该没问题吧?当通过子域访问该站点时,它实际上应该是子域?%{HTTP_HOST}?或者我误解了? – AJReading