我如何將此代碼從 php 轉換為 .htaccess?<?php if ( isset( $_SERVER[ "HTTP_REFERER" ] ) ) { $HOST_REFERRER = parse_url( $_SERVER["HTTP_REFERER"] ) [ "host" ]; $ALLOWED = array( $_SERVER[ "HTTP_HOST" ], "mysite1.com", "mysite2.com" ); if ( !in_array ($HOST_REFERRER, $ALLOWED ) ) { header( "Location: http://" . $_SERVER[ "HTTP_HOST" ] . "/error-403", true, 301 ); } }?>
1 回答

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
聽起來很簡單:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^mysite1\.com$ [AND]
RewriteCond %{HTTP_HOST} !^mysite2\.com$
RewriteRule ^ http://%{HTTP_HOST}/error-403 [R=301]
最好從 302 臨時重定向開始,然后在確定一切設置正確后才將其更改為 301 永久重定向。這樣可以防止在嘗試時出現緩存問題......
此實現同樣適用于 http 服務器主機配置或分布式配置文件(“.htaccess”文件)。顯然重寫模塊需要在http服務器內部加載并在http主機中啟用。如果您使用分布式配置文件,您需要注意它的解釋在主機配置中完全啟用并且它位于主機的文件夾中DOCUMENT_ROOT。
還有一條一般性的評論:您應該始終更喜歡將此類規則放在 http 服務器主機配置中,而不是使用分布式配置文件(“.htaccess”)。那些分布式配置文件增加了復雜性,通常是意外行為的原因,難以調試并且它們確實減慢了 http 服務器的速度。它們僅在您無法訪問真正的 http 服務器主機配置(閱讀:非常便宜的服務提供商)或堅持編寫自己的規則(這是一個明顯的安全噩夢)的應用程序的情況下作為最后的選擇提供。
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消