Я пытался сделать это сам, но я новичок в регулярных выражениях.
У меня есть этот URL:
http://[DOMAIN]/[category]/27466-some-article-is-here
Что должно перенаправить на этот URL:
http://[DOMAIN]/[category]/some-article-is-here
Я просто хочу удалить ID из URL. Категория может быть любой, которую я хочу сохранить.
Как этого добиться?
ОБНОВЛЕНИЕ: Я изменил перенаправление с @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-значные идентификаторы. Если вы хотите, чтобы это было более гибко, просто измените {5}
на другой квалификатор, например *
. Также обратите внимание, что это может соответствовать URL, которые вы не хотите перенаправлять.
* Квантификатор — Соответствует от нуля до неограниченного количества раз, столько раз, сколько возможно, возвращая по мере необходимости (жадный)
Ваше правило:
RewriteEngine on
RedirectMatch 301 ^(.*)\/[\d]{5}\-(.*)$ $1/$2
Или более точный вариант, чтобы избежать нежелательных перенаправлений:
RewriteEngine on
RedirectMatch 301 ^(.*example\.com\/.+)(?:\/[\d]{5})\-(.*)$ $1/$2
Поскольку вы упомянули, что вы новичок в регулярных выражениях, вот несколько инструментов, которые помогут вам начать работу:
Онлайн-инструмент для создания/тестирования регулярных выражений:regex101.com
Онлайн-инструмент тестирования перезаписи .htaccess:htaccess.madewithlove.be