首先,我不知道我是否正確理解您的問題,但我試了一試。
目前您有:
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示例,因爲正如我所說的,我無法測試它。