2013-05-28 86 views
0

我正在制作一个新网站来替换现有网站。而我们不会保持以前的固定链接结构:见下文
旧的URL = HTTP WWW .domain.com/article.php ID = 3242
新的URL = HTTP WWW .domain.com /作家/后名称将旧的WordPress网址文章重定向到新网站和新的固定链接网址结构

所以我们想将旧的网址重定向到新网址。我怎么能在htaccess文件中轻松地做到这一点?

我试过重定向301,但不起作用。
RedirectMatch 301 ^/article.php?ID = 3242 http://www.domain.com/author/post-name

+0

如果你用'\'逃避'?',它会起作用吗?所以'^/article.php \?ID = 3242' – Hobo

+0

不,我尝试过,但不起作用。 – migswd

+0

对不起,只是检查了我的旧.htaccess文件,并意识到为什么它不起作用。请参阅下面的答案。 – Hobo

回答

1

RedirectMatch将不匹配查询字符串(?后的部分)。 This article解释有点多,但这应该工作:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/article\.php$ 
RewriteCond %{QUERY_STRING} ^ID=3242$ 
RewriteRule ^(.*)$ http://www.domain.com/author/post-name [R=302,L] 

注意,我改成了302重定向,而你正在测试;一旦你确定了它的正确性,我只会将它改为301(以避免浏览器缓存不正确的重定向)。

+0

欧雅酷。但我应该在哪里说:在WordPress的规则之前/之后? #BEGIN WordPress的 RewriteEngine叙述在 RewriteBase/withoutmodel/ 重写规则^索引\ .PHP $! - [L] 的RewriteCond%{REQUEST_FILENAME} -f 的RewriteCond%{REQUEST_FILENAME} -D- 重写规则。 /withoutmodel/index.php [L] #END WordPress – migswd

+0

我把它放在WordPress规则之前;紧跟在后面。这意味着你有两个'RewriteEngine On'指令 - 你可以删除第二个。 – Hobo

+0

仍然不起作用。无法理解这里发生了什么? – migswd

相关问题