0

我阅读了所有其他类似的问题,但不明白如何设置它,所以我的旧页面重定向到它们应该重定向的地方。

这是我的设置:

我的旧网站页面:

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/

提前致谢!

4

2 回答 2

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]
于 2012-10-19T03:08:36.820 回答
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 并遇到同样问题的人!

于 2012-10-19T17:34:42.290 回答