我的 .htaccess 檔案中設定了一堆 301 重定向。我想做的是跟蹤使用重定向的次數,以便更好地管理它們。
有沒有辦法捕獲和記錄 PHP 發生的 301 重定向匹配?
換句話說,如果重定向是:
RewriteRule ^about/bozo$ /about [R=301,L]
有沒有辦法在每次使用 PHP 時捕獲“about/bozo”?(即使重定向由 htaccess 呼叫處理,而不是由 PHP 標頭重定向處理)
uj5u.com熱心網友回復:
您無法使用 PHP記錄Apache(例如 in )在請求中較早觸發的 3xx 重定向。.htaccess重定向對 PHP 完全不可見。
您無法使用 HTTPReferer來確定是否發生了重定向,因為瀏覽器保留了Referer初始請求(如果有)。
觸發 3xx 重定向的請求應記錄在服務器的訪問日志中。
使用 PHP 執行此操作的唯一方法是,以某種方式標記重定向的 URL(可能使用查詢字串)并在 PHP 腳本中檢查這一點。例如:
RewriteRule ^about/bozo$ /about?redirected=true [R=301,L]
...但這可能是不可取的。
uj5u.com熱心網友回復:
MrWhite 的回答是正確的,您在 PHP 中看不到這些重定向。但是,您不需要使用 PHP 來獲取所需的統計資訊。
如果您想了解這些重定向發生的頻率,您可以從 Web 服務器的access_log檔案中獲取它們。無論重定向是由 .htaccess 還是 PHP 觸發,每個 301 重定向都應在日志檔案中添加一個條目。這樣的日志條目應如下所示:
127.0.0.1 - - [01/Jan/2000:11:55:36 -0700] "GET /about/bozo HTTP/1.1" 301 456
您可以使用命令列工具來計算重定向:
grep '" 301 ' /var/log/apache2/access_log | wc -l
要么
grep 'GET /about/bozo ' /var/log/apache2/access_log | wc -l
grep日志檔案的過濾和行數在哪里wc -l。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433807.html
