我嘗試在 htaccess 中使用 RewriteRule
我想要我的網址
site.com/f_search.php?langs=en&langs=en
像
site.com/en/new.php?/en/f_search
我在 htaccess 中使用了這段代碼
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?/new.php ? /([^/]*)/?/f_search/?$ f_search.php?langs=$1&langs=$2
但它不適用于“?”
如果我將 new.php ? 更改為 new.php @
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?/new.php @ /([^/]*)/?/f_search/?$ f_search.php?langs=$1&langs=$2
效果很好
site.com/en/new.php@/en/f_search
任何想法將@更改為?在我的網址???
謝謝
uj5u.com熱心網友回復:
問號和后面的內容不是RewriteRule 的模式匹配的主題的一部分。這是清楚地記錄在案的。相反,您需要使用 aRewriteCond來訪問查詢字串的內容。
我認為這大致是您正在尋找的內容,盡管您可能需要對其進行調整以匹配您的實際情況:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^/([a-z] )/f_search$
RewriteRule ^/?(?:([a-z] )/)?new\.php$ /f_search.php?langs=$1&langs=%1
從您的問題來看,不清楚重寫目標中引數“langs”的兩個值應該在哪里獲取。因此,您可能必須根據規則中的需要進行調整。
同樣令人費解的是,您嘗試將該引數設定為“langs”兩次......這沒什么意義,當這些值被移交給基于 php 的邏輯時,第二次嘗試將簡單地覆寫第一次嘗試的值。
apache http 服務器的重寫模塊的檔案提供了很多精確的幫助和很好的例子:https ://httpd.apache.org/docs/current/mod/mod_rewrite.html
uj5u.com熱心網友回復:
最終代碼
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-z] )/new.php$ f_search.php?langs=$1 [L,NC]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/475471.html
