Intereting Posts
Любые предложения о том, как сделать эту функцию более эффективной или более полезной? Использование инструкции if на странице настройки темы Игнорирование категории в WP_Query по-прежнему показывает ссылки в next_post_link ()? Вставить sometext после первого h3 в содержании Использование ссылок HTML в пределах переводимой строки Отключить виджеты на определенных должностях Запустить JS-код в пользовательском логе Обновить все сообщения, как если бы нажал кнопку «Обновить» в окне редактирования сообщений Как создать страницу с определенным URL-адресом? Добавлено .html в Woocommerce, но ссылка на страницу не работает! сайт по-прежнему находится в локальном хосте Штрих-коды плагина WordPress не выводят ничего Добавить поле в панель мониторинга, чтобы обновить внедренный URL-адрес на главной странице? Странные проблемы с перенаправлением на wordpress из ssl с замком в ssl без замка Каково влияние, если я игнорирую заголовок и контент в своих настраиваемых типах сообщений CPT?

htaccess и перенаправление на новый URL с использованием регулярного выражения

Мне сложно создать правило перезаписи для перенаправления, используя часть старого URL-адреса для WP. Пример:

Старый URL:

http://www.example.com/news/index.php/2014/11/07/my-blog-post-from-old-site

или

http://www.example.com/news/index.php/2014/11/07/my_blog_post_from_old_site

Новый URL:

http://www.example.com/2014/11/07/my-blog-post

Новый URL должен иметь только даты и первые три элемента постоянной ссылки после удаления из тире. Если я удалю часть с заменой подчеркивания на тире, все остальное будет работать так же, как и должно.

Вот мои правила .httaccess

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #replace underscores with dashes RewriteRule ^(/news/.*/[^/]*?)_([^/]*?_[^/]*)$ $1-$2 [N] RewriteRule ^(/news/.*/[^/]*?)_([^/_]*)$ $1-$2 [R=301] #redirect to new URL RewriteRule ^news/index\.php/([^-]+-[^-]+-[^-]+).* /$1 [R=301,L,NC] #WP standard stuff RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 

Найдено, что решение полезно

Я думаю, это дорогой способ заменить подчеркивания тире. Но это работает, по крайней мере, в моей тестовой среде. Первое правило заменяет тире по одному. Второе правило затем удаляет префикс из запрошенного URL.

 RewriteBase / # replace underscores with dashes RewriteRule (.+?)_(.+) $1-$2 [R=302,L] # strip "news/index.php" RewriteRule ^news/index.php/(.*) /$1 [R=302,L]