Как написать разные правила для разных URLов в .htaccess?
Как написать для урл со следующими ссылками:
домен.ru/blog/
домен.ru/board/
домен.ru/forum/
Правило: вместо .htm заканчивать ссылку без расширения .htm (пример: домен.ru/blog/302513).
А для всех остальных ссылок правило для назначения ссылок в виде названия записи для WP:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Проблема возникла из-за старого архива сайта на .htm и нового на уже на wp.
Весь старый сайт залит из архива, и необходимо сохранить URL старых и совместить с настроенными на WP.
Подсказали так :
RewriteEngine On
RewriteBase /
RewriteRule ^blog/(.*)\.htm /blog/$1 [R,L] # преобразовали на ссылку без htm и переправили на нее
RewriteRule ^blog/(.*) - [L] # если открываем из папки blog, то ничего не делать
RewriteRule ^board/(.*)\.htm /board/$1 [R,L]
RewriteRule ^board/(.*) - [L]
RewriteRule ^forum/(.*)\.htm /forum/$1 [R,L]
RewriteRule ^forum/(.*) - [L]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
но так wp url отображаются нормально, а с архива в .htm отображается ошибка и не работает
ugodrus: расширение .htm, я пробовал менять в этой строке на htm - вместо html, RewriteCond %{REQUEST_URI} ^/(blog|board|forum)/(.+)(\.html?)?$
такая же ошибка
Это выражение жрёт любое сочетание для трёх папок blog, board, forum с расширением htm, html и даже без такового и делает переброс пользователя не внутренний а с отправкой заголовка в соответствующую папку. Проблема может быть в самих папках. Там тоже может быть перемаршрутизация в htaccess которая пересылает пользователя обратно к корню. Таким образом у вас получается бесконечный цикл. Проверяйте конфиги там. Или же возможны и другие правила маршрутизации в том же файле, которые вы не указали.
В моем предложении пожалуй лишний один знак - ? перед $, поскольку позволяет перекидывать даже при отсутствии расширения.