我有一個重寫規則,它可以完美地跨域作業,但會在同一個域上創建一個無限回圈。
Allow from all
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ url.php?i=$1 [R=301,L]
目標是創建一個替代 404 錯誤的替代方法,該錯誤可以正確地轉到鏈接縮短應用程式中的頁面。
例如example.com/abc需要重定向到example.com/url.php?i=abc
即它從'/'之后獲取'abc'
但是,只要 url.php 托管在 xyz.com 上,它就會重定向一次并以
example.com/url.php?i=url.php 而不是值“abc”
修復此重寫規則的最佳方法是什么,以便它獲取“abc”一次并將其傳遞給正確的 url.php?
謝謝你
uj5u.com熱心網友回復:
您需要洗掉R=301標志,因為您不想將內部處理暴露給外部客戶。要使其內部化,您不得使用R標志。
如前所述,您需要使用RewriteCond來跳過正在重寫的檔案和目錄。
建議代碼:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ url.php?i=$1 [QSA,L]
QSA標志用于查詢字串追加。
確保在測驗此更改之前完全清除瀏覽器快取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459221.html
