簡體   English   中英

.htaccess 重寫規則多頁

[英].htaccess Rewrite rule multiple pages

幾個小時以來一直在努力解決這個問題,但沒有做好。

我有一個網站www.example.com/user.php?username=john我使用.htaccess讓它看起來像這樣www.example.com/user/john我使用以下.htaccess重寫規則並且它有效

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./user.php?username=$1 [L]

問題

我有一個個人資料頁面,如www.example.com/profile.php?username=john我還使用以下.htaccess使其看起來像www.example.com/profile/john

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*/([a-zA-Z0-9_-]+)|([a-zA-Z0-9_-]+))$ ./profile.php?username=$1 [L]

現在,這根本不起作用,但是當我刪除第一個重寫規則(rule user.php)並將其放在第二個重寫規則(rule profile.php)之后時,我的個人資料頁面有效,反之亦然,

所以基本上是我首先放置的規則決定了我可以使用我的 URL 訪問哪個頁面。

我需要它為兩個頁面工作。 我同意你在.htaccess重寫時還沒有達到初學者水平。

提前致謝。

能否請您嘗試以下。 由於 URL 具有其唯一性,因此最好檢查其%{REQUEST_URI}值中的條件,我正在檢查 REQUEST_URI 是否從user開始,然后是 go 對於 1 條規則,如果它以profile開頭,那么對於另一個規則是 go 所以沒有混淆(在哪里我相信你為此嘗試了很好的榮譽,但由於條件之間沒有隔離,因此它令人困惑的引擎恕我直言)。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/user/([\w-]+)/?$
RewriteRule ^.*$ /user.php?username=%1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/profile/([\w-]+)/?$
RewriteRule ^.*$ /profile.php?username=%1 [NC,L]

您也可以在下面嘗試,首先檢查傳入請求是否既不是文件也不是目錄,然后檢查匹配模式。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([\w-]+)/?$ /user.php?username=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([\w-]+)/?$ /profile.php?username=$1 [NC,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM