我有所有頁面的舊 URL 路徑
example.com/w/Page_title
現在我把它改成
example.com/Page_title
使用Apache 的短 URL 手冊
問題是:如何為使用書簽回來的用戶從舊路徑進行 301 重定向?
我的 LocalSettings.php
$wgForceHTTPS = true;
$wgScriptPath = "/wiki";
$wgArticlePath = "/$1";
和 mod_rewrite:
RewriteEngine On
# Short URL for wiki pages
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]
# Redirect Main Page to /
RewriteRule ^/*$ /index.php?title=Main_Page [L,QSA]
RewriteRule .*\.ico$ - [L]
uj5u.com熱心網友回復:
您需要RewriteRule在其他規則之前添加一個來進行重定向:
RewriteRule \/?w\/(.*) /$1 [R=301,L]
這匹配任何以 開頭的 URL/w/并重定向以將其洗掉。
\/?- 一個可選的起始斜杠,因此此規則將適用于不同的背景關系(Apache conf 和 .htaccess)w\/-w/目錄(.*)-w/在成為$1目標的捕獲組中之后的所有內容/$1- 重定向到哪里R=301使其成為永久 (301) 重定向L- 將此作為最后的重寫規則,以便其他規則在匹配時不會被處理。
最后,它應該與您的其他規則類似:
RewriteEngine On
# Redirect old URLs that start with /w/
RewriteRule \/?w\/(.*) /$1 [R=301,L]
# Short URL for wiki pages
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]
# Redirect Main Page to /
RewriteRule ^/*$ /index.php?title=Main_Page [L,QSA]
RewriteRule .*\.ico$ - [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/367039.html
上一篇:以角度構建URL
