.htaccess 重定向,從舊的髒 URL 到帶有參數的乾淨的新 URL

.htaccess 重定向,從舊的髒 URL 到帶有參數的乾淨的新 URL

我有以下 2 個鏈接,我不太喜歡 .htaccess 規則然而

Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111

我想要從舊網址到新網址的所有流量(包括參數charity_id& project_id)。

我正在嘗試學習 .htaccess 規則,但發現線上教學有點模糊。

我真的很想對 .htaccess 規則進行簡單的解釋。

(授人以魚,飽足一日,授人以魚,授人以漁,授人以漁)。

正確的答案將是帶有簡單而有用的解釋的答案(如果可能的話還包括規則!)。

答案1

要學習設定 .htaccess 規則,您至少需要一些正規表示式技能,並且有信心使用 mod_rewrite Apache 模組,因為由於其靈活性,它可以方便地建立重寫規則。

如果是這樣,你的程式碼可以是這樣的

RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html(對於 2.4 Apache 版本,如果適用,請選擇不同的版本)是有用的參考,因此您必須從它開始,即使是為了更好地理解上面的程式碼。

你可以將其RewriteRule視為重寫的磚塊,因此每個規則都會至少使用它一次。RewriteCond當您需要檢查環境變數或引用查詢字串值時,您將添加 before ,就像我們的程式碼片段一樣。

要將反向引用放入來自先前的替換字串中,RewriteCond您將使用 from %1to%9 值;如果您需要從其第一部分進行反向引用RewriteRule,您將使用$1to $9

請注意替換 url 末尾的問號,因為這是跳過查詢字串的方法;如果遺失,您將?charity_id=885&project_id=18111在新網址末尾看到。

答案2

在另一篇文章中,sysadmin1138 寫了一篇關於 mod 重寫的非常好的介紹。

你可以找到帖子這裡

/編輯:範例:

old: http://example.com/path?var=val 
new: http://example.com/path/var/val

.htaccess

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

相關內容