有没有办法使用.htaccess拒绝直接请求我的网站的特定部分,例如www.example.com/XXXXX
我只想让Referer只允许XXXXXX。我知道我必须以某种方式使用HTTP_REFERER来实现我的目标,但目前我正在使用其他.htaccess规则而不确定如何将所有规则组合在一起。这就是我现在在.htaccess中所拥有的
选项+ FollowSymlinks RewriteEngine 在RewriteCond%{REQUEST_FILENAME}!-f RewriteRule ^([^ /] +)$ /index.php?page=$1 [QSA,L]
答案 0 :(得分:0)
首先,我不确定我是否理解你的问题,但无论如何我都试一试。
目前你有:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA,L]
您还需要的是:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC]
RewriteRule XXXXXX/(.*)$ - [F,NC,L]
.htaccess RewriteRule
按照它们发生的顺序进行检查,所以你可能想做这样的事情,虽然我已经纠正,因为没有机会检查它是否有效: / p>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA]
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC]
RewriteRule XXXXXX/(.*)$ - [F,NC,L]
也就是说,首先检查它是否是一个名为index.php的争论文件,如果不是(没有L
标志),应该重写,继续下一条规则,首先抓住一个新条件,然后是规则验证,限制访问(抛出HTTP 403)。
这有意义吗? 无论如何,请尝试上面的.htaccess示例,因为正如我所说,我无法测试它。