htaccess の URL から ID を削除する

htaccess の URL から ID を削除する

私は自分でこれをやろうとしましたが、正規表現の初心者です。

このURLがあります:

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 と一致する場合があることに注意してください。

* 量指定子 — 0 回から無制限の回数まで、可能な限り何度も一致し、必要に応じて返します (貪欲)

あなたのルール:

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

または、不要なリダイレクトを回避するためのより正確なバリエーション:

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

正規表現は初めてだとおっしゃっていましたので、始めるのに役立つツールをいくつか紹介します。

オンライン正規表現構築/テストツール:regex101.com

オンライン .htaccess 書き換えテスト ツール:htaccess.madewithlove.be

関連情報