Удаление строки и даты из URL с помощью правил htaccess и перезаписи

#apache #.htaccess #url #redirect #url-rewriting

#apache #.htaccess #url #перенаправление #url-переписывание

Вопрос:

Я хотел бы заменить некоторые части моего URL-адреса, год-месяц, а также расширение URL-адреса .html.

В принципе, я хочу это (старый URL)

 https://olddomain.com/weblog/archives/2016/06/post-name-example.html
 

перенаправить на

 https://newdomain.com/post-name-example/
 

этот URL. Я искал stackoverflow и многие другие сайты, пытался смешивать разные ответы от разных людей. Пытался написать свои собственные правила, но у меня не получилось. Любая помощь была бы очень признательна. Спасибо.

Я попробовал это, чтобы удалить расширение .html

 #1)redirect /file.html to /file

RewriteCond %{THE_REQUEST} /([^.] ).html [NC]
RewriteRule ^ /%1 [NE,L,R]
 

Это для удаления формата даты из URL

 # REMOVE DATE FROM WP POST PERMALINKS
RedirectMatch 301 ^/wordpress/([0-9] )/([0-9] )/([0-9] )/(.*)$ http://example.com/$4

http://example.com/wordpress/2012/04/12/post-name/

..to elegance:

http://example.com/post-name/
 

Мой файл htaccess выглядит следующим образом

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^weblog/archives/[0-9]{4}/[0-9]{2}/(.*).html$ https://newdomain.com/$1/ [R=301.L]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
 

Это сработало правильно, если кому-нибудь это понадобится в будущем:

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^weblog/archives/[0-9]{4}/[0-9]{2}/([^.] ).html$ http://www.newdomain.com/$1/ [L,R=301]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
 

Комментарии:

1. Пожалуйста, напишите, что вы пробовали.

2. Я удалил старые правила, но постараюсь собрать воедино решения, которые я пробовал. Сейчас я отредактирую свой вопрос.

3. Ваш Redirect внешний вид в порядке и должен работать. Перенаправляет ли он ваш старый URL-адрес в неожиданное место?

4. Итак, каков фактический старый формат URL сейчас? Благодаря добавленному примеру внизу, в этом вопросе теперь есть два разных формата URL.

5. Для того, что вы изначально сказали, что хотите переписать, RewriteRule ^weblog/archives/[0-9]{4}/[0-9]{2}/(.*).html$ https://newdomain.com/$1/ [R=301.L] должно сработать.