從 htaccess 中的 URL 中刪除 ID

從 htaccess 中的 URL 中刪除 ID

我嘗試自己這樣做,但我是正規表示式的新手。

我有這個網址:

http://[DOMAIN]/[category]/27466-some-article-is-here

應該要重定向到這個 URL:

http://[DOMAIN]/[category]/some-article-is-here

我只是想從 URL 中刪除 ID。該類別可以是我想保留的任何內容。

我該如何實現這個目標?

更新:我將 @taduuda 的重定向調整為:

RewriteRule ^(.*)\/[\d]*\-(.*)$ $1/$

這對於測試工具來說看起來不錯,但是在我的 WordPress 網站上仍然不起作用。

我的.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# BEGIN - Custom Redirects
RedirectMatch 301 /heute(.*) /$1
RewriteRule ^(.*)\/[\d]*\-(.*)$ $1/$2
# END - Custom Redirects

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>
# END WordPress

答案1

不確定這是否適用於您擁有的每個 URL,但這將為您提供一個工作基礎。請注意,這會專門檢查 5 位數的 ID。如果您希望更靈活,只需更改{5}為不同的限定符,例如*.另請注意,這可能與您不想重定向的 URL 相符。

* 量詞 - 零次和無限次之間的匹配,盡可能多的次數,根據需要回饋(貪婪)

你的規則:

RewriteEngine on
RedirectMatch 301 ^(.*)\/[\d]{5}\-(.*)$ $1/$2

或更精確的變體以避免不必要的重定向:

RewriteEngine on
RedirectMatch 301 ^(.*example\.com\/.+)(?:\/[\d]{5})\-(.*)$ $1/$2

既然您提到您是正規表示式的新手,那麼這裡有一些可以幫助您入門的工具:

線上正規表示式建置/測試工具:正規表示式101.com

線上.htaccess重寫測試工具:htaccess.madewithlove.be

相關內容