.htaccess и 301 редирект (динамические страницы) WordPress
Я прочитал все другие подобные вопросы, но не мог понять, как его настроить, чтобы мои старые страницы перенаправляли туда, где должны.
Вот мои настройки:
Мои старые страницы сайта:
http://www.oldsite.com/blog/?p=1234
http://www.oldsite.com/blog/?p=432
http://www.oldsite.com/blog/?p=xxxx
Я хотел бы перенаправить первые два так:
http://www.oldsite.com/blog/?p=1234 -> http://www.newsite.com/somewhere/on/mysite/
http://www.oldsite.com/blog/?p=432 -> http://www.newsite.com/somewhere/else/on/mysite/
и все другие страницы (123, 321, 567, 999, ...) перенаправляются на мою домашнюю страницу следующим образом:
http://www.oldsite.com/blog/?p=***** -> http://www.newsite.com/
Заранее спасибо!
2 ответа
Я пробовал код @Jon Lin, но он не работал для моего сайта WordPress. Я думаю, что проблема была в том, что я запускаю WordPress... Я должен был включить свой код.htaccess, но я не думал, что WP будет проблемой...
Вот что я должен был сделать, чтобы заставить его работать: так как это сайт WP, вам нужно поместить код в WP mod_rewrite. Вот мой.htaccess перед перенаправлениями:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
и после:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/blog/$
RewriteCond %{QUERY_STRING} ^p=998$
RewriteRule . /some/where/over-there? [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Надеюсь, что это поможет другим людям, работающим с WP и имеющим такую же проблему!
Вам нужно будет использовать способность mod_rewrite для сопоставления со строкой запроса, но все правила должны быть перед любыми правилами WordPress.
RewriteEngine On
# http://www.oldsite.com/blog/?p=1234 -> http://www.newsite.com/somewhere/on/mysite/
RewriteCond %{QUERY_STRING} ^p=1234$
RewriteRule ^/?blog/$ http://www.newsite.com/somewhere/on/mysite/ [L,R=301]
# http://www.oldsite.com/blog/?p=432 -> http://www.newsite.com/somewhere/else/on/mysite/
RewriteCond %{QUERY_STRING} ^p=432$
RewriteRule ^/?blog/$ http://www.newsite.com/somewhere/else/on/mysite/ [L,R=301]
# http://www.oldsite.com/blog/?p=***** -> http://www.newsite.com/
RewriteCond %{QUERY_STRING} ^p=[0-9]+$
RewriteRule ^/?blog/$ http://www.newsite.com/ [L,R=301]