我阅读了所有其他类似的问题,但无法理解如何设置它,以便我的旧页面重定向到他们应该的位置。
这是我的设置:
我的旧网站页面:
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/
提前致谢!
答案 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并遇到同样的问题!