.htaccess和301重定向(动态页面)wordpress

时间:2012-10-18 21:28:46

标签: wordpress .htaccess redirect http-status-code-301 dynamic-pages

我阅读了所有其他类似的问题,但无法理解如何设置它,以便我的旧页面重定向到他们应该的位置。

这是我的设置:

我的旧网站页面:

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 个答案:

答案 0 :(得分:3)

您需要使用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]

答案 1 :(得分:0)

我试过@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并遇到同样的问题!