#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]
должно сработать.