亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

htaccess 如何重寫這個url

htaccess 如何重寫這個url

PHP
GCT1015 2023-08-19 14:09:55
如何重寫此 URL:https://example.com/illustrations.php?category=cats&cat_id=1到:https://example.com/category/cats另外,我如何保留cat_id參數?我嘗試了這個,但它不起作用:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^/?category/(.*?)/?$ /illustrations.php?category=$1 [L]
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

當我添加此代碼并轉到illustrations.php?category=cats它時,不會更改瀏覽器欄中的 URL。

對,那是正確的”。

您在內部發布的代碼URL /category/cats(您應該在 HTML 源中鏈接到的 URL)重寫回實際的文件系統/URL 路徑:/illustrations.php?category=cats。為了使“漂亮”的 URL /category/cats“有效”,這是必需的。

您不能.htaccess僅使用 - 如果這就是您所暗示的內容來更改 URL 結構。您確實需要實際更改 HTML 源中的物理 URL。

您可以使用 實現從規范 URL 的外部重定向(而不是重寫),但請注意,這只是為了有利于 SEO(以及可能已經鏈接到舊 URL 的第三方)。如果您要更改現有的 URL 結構并且 SEO 是一個問題,那么這是一個必要的附加步驟,但它不是您網站“工作”的一部分。/illustrations.php?category=cats/category/cats.htaccess

我如何仍然保留cat_id參數

您需要在 URL 中包含參數的值。cat_id例如。/category/cats/1(正如 @arkascha 在評論中建議的那樣)或/category/1/cats- 取決于哪個值更重要。我會把更重要的值放在第一位,因為共享時 URL 可能會被意外裁剪。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?category/(.*?)/?$ /illustrations.php?category=$1 [L]

這條規則可以簡化。文件系統檢查相對昂貴??磥砟梢酝ㄟ^使正則表達式更加具體來刪除這兩個內容。例如??梢?code>/category/1/cats映射到文件嗎?您需要可以訪問目錄嗎?我希望這兩個問題的答案都是“否”。

我還將決定是否允許尾隨斜杠,而不是同時允許兩者(如您當前的規則所示)。嚴格來說,這會創建重復的內容(兩個 URL;相同的內容),因此需要額外的步驟來解決。您的示例 URL 不包含尾部斜杠。

因此,您可以將規則簡化為以下形式,以便重寫/category/1/cats(無尾部斜杠)為/illustrations.php?category=cats&cat_id=1

RewriteEngine On
RewriteRule ^category/(\d+)/([\w-]+)$ /illustrations.php?category=$2&cat_id=$1 [L]

假設cat_id可以是 1 位或多位數字 ( 0-9)。并且category僅限于以下字符:a-z、A-Z0-9、_(下劃線)、-(連字符)。

對于正則表達式,最好盡可能限制。.通過省略上述規則中最后一個路徑段中的點 ( ),它無法匹配物理文件(假設所有文件都有文件擴展名)。


查看完整回答
反對 回復 2023-08-19
  • 1 回答
  • 0 關注
  • 97 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號