首先,我不知道我是否正确理解您的问题,但我试了一试。
目前您有:
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
的在它们发生的顺序检查,所以你可能想要做的这样的事情,虽然我纠正,因为没有机会检查它是否会工作:
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示例,因为正如我所说的,我无法测试它。