我試圖創建一個.htaccess mod_rewrite的將不同的表現,如果當前的引用者是不是我自己的域名。例如,說我自己的example.com(即www.example.com,http://example.com等)。當有人前往example.com(或beta.example.com等子域)時,我想忽略此.htaccess規則。所以我猜這個正則表達式基本上只是尋找example.com中的某個地方,而忽略它們。的.htaccess確定refferer不是當前域
然而,作爲otherdomain.com這樣一個域(假設通過CNAME或A記錄指向example.com)訪問我的網站,我想他們的地方重定向。這是我迄今爲止所擁有的,我認爲是接近但並不工作。
我的這些規則主要困惑是重寫規則(^ $在這種情況下)後到來的部分。我在Google上看到了一些不同的東西,我不確定這些差異。舉例來說,我也看到只是一個^,一個(。*)$等
RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*(example)\.com
RewriteRule ^$ redirectfile.php [L]
我也一直在搞亂
RewriteCond %{HTTP_REFERER} ^http://(.+\.)*\.com
RewriteCond %1 !^(example)\.$
RewriteRule ^$ redirectfile.php [R=302,L]
感謝這些解釋。但是,這些規則似乎並不奏效。無論如何,它總是重定向。我正在使用random.example.com(這個應該忽略規則)和test.local(它指向同一個服務器,但應遵循規則)進行測試。在每種情況下,我都將它重定向到轉儲$ _SERVER的PHP文件,並且HTTP_REFERER爲空,所以我嘗試使用具有正確值的HTTP_HOST。儘管如此,規則仍然沒有運氣。是否因爲HTTP_HOST不包含像那個正則表達式那樣的http? – joshholat 2012-02-14 14:47:18
所以我最後的聲明必須是這樣。我拿出http部分並使用HTTP_HOST,現在它正在工作。使用HTTP_HOST安全嗎?無論如何,它可能比HTTP_REFERER更可靠,對嗎? – joshholat 2012-02-14 14:48:38
@joshholat'HTTP_HOST'更可靠,但它總會給你,你的請求,而不是你來自的頁面域頁面的域名。如果你需要後者,那麼你應該使用'HTTP_REFERER'。請注意,如果您直接在瀏覽器中鍵入URL,將HTTP_REFERER設爲空白(空字符串),將其加入書籤或來自安全頁面。 – 2012-02-14 14:53:28