2013-10-06 4 views
1

У меня был старый веб-сайт, запрограммированный для меня, и теперь я перенес его в Wordpress, но на многих веб-сайтах все еще есть ссылки на старые URL-адреса, и я хочу перенаправить их в Wordpress, потому что есть ответ 404 ,rewrite rule wordpress custom url

старая структура была: http://www.website.com/news/2013/june/01/slug-slug-slug-slug нового в WordPress: http://www.website.com/news/2013/06/01/slug-slug-slug

Обратите внимание, что я только нужно изменить:

january -> 01 
february -> 02 
march -> 03 
april -> 04 
may -> 05 
june -> 06 
july -> 07 
august ->08 
september -> 09 
october -> 10 
november -> 11 
december -> 12 

Должен ли я включить что-то в .htaccess для WordPress' или в Файл rewrite.php? Я думал, что мне нужно изменить переменную% monthday% от numeric до string ... но если я обновляю wordpress, мне, вероятно, придется снова ее изменить.

ответ

1

Если вы хотите использовать mod_rewrite, вы можете сделать это с помощью 12 правил. Я не знаком с самим Wordpress, и я не знаю, есть ли «простой» способ через конфигурацию самого Wordpress. Добавьте следующие правила выше правил, которое отправляет все запросы на файл index.php Wordpress':

RewriteRule ^news/([^/]+)/january/([^/]+)/(.*)$ /news/$1/01/$2/$3 [R,L] 
RewriteRule ^news/([^/]+)/february/([^/]+)/(.*)$ /news/$1/02/$2/$3 [R,L] 
RewriteRule ^news/([^/]+)/march/([^/]+)/(.*)$ /news/$1/03/$2/$3 [R,L] 
#etc... 

Как всегда, см the documentation для получения информации о синтаксисе используются.

+0

Это не работает, но это не ошибка. Ну, в wordpress он показывает мне, что 404 не найден, поэтому перенаправление работает неправильно. Я должен объяснить, что у меня есть мой WordPress в WordPress папку /, так что я в .htacces: # НАЧАТЬ WordPress RewriteEngine На RewriteBase/WordPress/ RewriteRule^индекс \ .php $ - [L] RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule. /wordpress/index.php [L] Является ли это эффективным моим правилом перезаписи? Я знаю в URL-адресах, я должен добавить mysite.com/wordpress – walolinux

+0

Да, как я уже говорил ранее, вы должны добавить мои правила перед правилом, которое отправляет запрос в индексный файл wordpress. В этом случае поставьте правила за «RewriteBase». – Sumurai8

0

Там будет 12 правил, как это, так что вы можете иметь что-то вроде этого:

RewriteRule ^(news/[^/]+)/january/([^/]+/.+)$ $1/01/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/february/([^/]+/.+)$ $1/02/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/march/([^/]+/.+)$ $1/03/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/april/([^/]+/.+)$ $1/04/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/may/([^/]+/.+)$ $1/05/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/june/([^/]+/.+)$ $1/06/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/july/([^/]+/.+)$ $1/07/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/august/([^/]+/.+)$ $1/08/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/september/([^/]+/.+)$ $1/09/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/october/([^/]+/.+)$ $1/10/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/november/([^/]+/.+)$ $1/11/$2 [L,R=301,NC] 
RewriteRule ^(news/[^/]+)/december/([^/]+/.+)$ $1/12/$2 [L,R=301,NC] 

Кроме того, убедитесь, чтобы эти правила сверху, перед любыми другими правилами перезаписи.

+0

Это отбрасывает мне ошибку 500 на моем сервере :-( – walolinux

+0

Исправлено. Извините, добавлен дополнительный '(' – anubhava

+0

ОК, теперь он не выбрасывает 500 ошибок, но Wordpress бросает 404, поэтому он не работает. wordpress в папке: mysqite.com/wordpress для разработки, и url, который я вставляю, также с wordpress, если я положил 01 для января, он работает, но с «january» он не работает ... У меня есть ада Wordpress к правилам перезаписи, которые вы вставляете мне? – walolinux