為什麼 HTACCESS RewriteCond %{HTTP_COOKIE} 僅適用於 php 而不適用於 html?

為什麼 HTACCESS RewriteCond %{HTTP_COOKIE} 僅適用於 php 而不適用於 html?

我試圖使用此程式碼重定向子資料夾中的所有直接訪問

RewriteEngine on

RewriteCond %{HTTP_COOKIE} !user_cookie=[^;]
RewriteRule .* http://webhost.org/ [R=301,L]

我意識到它僅適用於 OHP 文件,不適用於 HTML 等其他文件。我嘗試訪問 PHP 文件的鏈接,它按我的計劃工作,但是當我訪問帶有.html擴展名的其他文件時,它不會重定向,就好像它忽略了.htaccess.

我是新來的.htaccess。我究竟做錯了什麼?

伺服器資訊:

  • 全新安裝 Vestacp
  • Apache/2.2.15(CentOS 6 x64)

答案1

您發布的程式碼不一定適用於「直接」請求。它適用於未設定 cookie(即未在CookieHTTP 請求標頭中發回)的情況 - 這不是同一回事。 (大概您正在設定「會話」cookie?但是,瀏覽器對「會話」的定義各不相同,因此這些 cookie 最終可能會更多執著的比你預期的。

如果它“僅適用於 PHP 文件,但不適用於 HTML 等其他文件”,那麼這是因為瀏覽器Cookie出於某種原因沒有向 PHP 文件發送請求的 HTTP 請求標頭。也許是 PHP 檔案“不正確”並且Cookie:應該發送標頭 - 就像 HTML 文件一樣?

PHP 和 HTML 檔案之間的差異可能在於快取、網域和/或 URL 路徑。這與你的腳本無關.htaccess

要檢查“直接訪問”,更常見的是檢查空Referer標頭。然而,您使用的這種(以及任何)方法並不完全可靠。

相關內容