幾個小時以來,我試圖創建一個重寫規則,結果應該是重寫為 shtml 檔案而不是 php 檔案。檔案名被重寫,但我總是丟失 get 引數(呼叫時不會傳遞給 shtml 檔案)。如果我對 php 檔案做同樣的事情,它就可以作業。
不起作用:
RewriteRule ^search/(.*)$ LookAt.shtml?q=$1 [L,NC]
是否有效:
RewriteRule ^search/(.*)$ LookAt.php?q=$1 [L,NC]
我已經嘗試過 QSA 等。不知何故沒有任何效果(谷歌為 .p??hp 回傳了很多結果,對于 .(s)html 我沒有發現任何有用的東西),我希望有人能給我一個提示,我已經為此發瘋了問題……
謝謝!
uj5u.com熱心網友回復:
我使用:(
console.log(window.location.search);除錯問題)
那就是問題所在。您不能使用客戶端JavaScript 從重寫服務器端的 URL 讀取查詢字串。鑒于/search/foo客戶端請求中沒有查詢字串的請求。
客戶端 JavaScript 只能在瀏覽器中看到請求的 URL。例如:
// Outputs "https://example.com/search/foo"
console.log(location.href);
這同樣適用于.php檔案。但是您可能正在檢查$_GET['q']或$_SERVER['QUERY_STRING']改為在服務器端腳本中?
由于您使用的是.shtml我假設您將使用服務器端包含 (SSI) 來訪問查詢字串。例如:
// Outputs "q=foo"
console.log('<!--#echo var="QUERY_STRING" -->');
如果您只使用客戶端 JS,那么您可能只是直接決議請求的 URL 以提取搜索短語。例如。/search/foo. (在這種情況下,無需重寫請求以附加查詢字串。只需重寫 toLookAt.shtml就足夠了。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322387.html
上一篇:如果此子目錄包含另一個.htaccess,RewriteRule會不必要地將請求重定向到index.php而不是按原樣提供子目錄
