簡體   English   中英

HTACCESS:將數千個包含目錄的 Url 重定向 (301) 到簡單的 url

[英]HTACCESS : Redirect (301) thousands of Url's containing directories to simple url's

我需要使用 .HTACCESS 方法將 Wordpress 包含文件夾/子文件夾的文章的大量 URL 已經生成(並且已經編入索引...)轉換為沒有任何文件夾/子文件夾名稱的簡單 URL

例子:
https://www.website.com/Animals/Cats/mycat.htmlhttps://www.website.com/mycat.html
https://www.website.com/Animals/Dogs/mydog.htmlhttps://www.website.com/mydog.html
https://www.website.com/Countries/France/bordeaux.htmlhttps://www.website.com/bordeaux.html
ETC...

我已經在 Wordpress 配置中更改了永久鏈接選項。 因此,現在生成的 URL 格式正確(例如: https://www.website.com/bordeaux.html ),沒有任何文件夾名稱。

我的問題是將所有舊網址重定向到這種新格式以防止 404 並保持排名。

如果試圖在 my.htacess 中添加這一行:
RewriteRule ^/(.*)\.html$ /$1 [R=301,L,NC]
我 egally 嘗試了RedirectMatch 301 (.*)\.html$方法,它是一樣的。 我快要瘋了。
我做錯了什么,你能幫我嗎?

謝謝

只需匹配 url 的最后一部分並將其傳遞給重定向:

RewriteRule /([^/]+)\.html$ /$1.html [R=301,L,NC]

它將匹配任意數量的目錄,例如:

 RewriteRule ^/(.*)\.html$ /$1 [R=301,L,NC]

RewriteRule模式匹配的 URL 路徑從不以斜杠開頭。 但是當有更多“文件夾”時,您可以使用它來僅匹配最后一個路徑段。 並且目標 URL 也需要以.html (根據您的示例)。

所以,這可以寫在一個指令中:

RewriteRule /([^/]+\.html)$ /$1 [R=301,L]

這處理任何級別的嵌套“文件夾”。 但不匹配文檔根目錄中的/foo.html (目標 URL)(由於正則表達式上的斜杠前綴),因此沒有重定向循環。

(不需要任何前置條件。)

這里的$1反向引用包括.html后綴。

將舊 URL 重定向到沒有文件夾名稱的新 URL。 您可以使用以下代碼重定向包含 .html 的 URL:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+).html$ /$5.html [L,R=301]

暫無
暫無

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

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