
私は自分でこれをやろうとしましたが、正規表現の初心者です。
この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