Удалить конечный номер из URL через.htaccess
Я добавил это правило
RewriteRule ^(.*)-[0-9]+/$ /$1/ [L,QSA]
удалить конечный номер, которому предшествует дефис из URL на сайте WordPress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^(.*)-[0-9]+/$ /$1/ [L,QSA]
</IfModule>
Но, похоже, это не сработало, мне кажется, что регулярное выражение в порядке, но я предполагаю, что оно противоречит другим правилам.
2 ответа
Вы можете попробовать это:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Additional 2 lines to remove the trailing -Number from the URL
RewriteCond %{REQUEST_URI} ^/(.*)-(?:[0-9]*)?/?$ [NC]
RewriteRule .* %1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
2 дополнительные линии перенаправляются навсегда
http://example.com/any/number/of/folders/anything-NUMBER
Для того, чтобы:
http://example.com/any/number/of/folders/anything
-NUMBER
комбинация должна быть завершающей строкой в URL, с или без завершающей косой черты.
Дефис -
удаляется всегда, даже когда номера нет. Если вы хотите сохранить его, замените
RewriteRule .* %1 [R=301,L]
с
RewriteRule .* %1- [R=301,L]
Постоянное перенаправление используется для отображения URL замещения в адресной строке браузера. Для тихого картирования удалите R=301
из [R=301,L].