首页 文章

使用.htaccess拒绝直接请求

提问于
浏览
0

有没有办法使用.htaccess拒绝直接请求我的网站的特定部分,例如www.example.com/XXXXX

我只想让Referer只允许XXXXXX . 我知道我必须以某种方式使用HTTP_REFERER来实现我的目标,但目前我正在使用其他.htaccess规则而不确定如何将所有规则组合在一起 . 这就是我现在在.htaccess中所拥有的

选项FollowSymlinks RewriteCond%RewriteEngine !-f RewriteRule ^([^/])$ /index.php?page=$1 [QSA,L]

1 回答

  • 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 's are checked in the order they occur, so you might want to do something like this, although I stand corrected because haven'有机会检查它是否有效:

    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示例,因为正如我所说,我无法测试它 .

相关问题