Htaccess重定向不适用于我的wordpress

问题描述 投票:1回答:2

我正在努力解决重定向问题。我对此并不熟悉,我尝试了一个多星期来解决它,但我找不到答案,尽管谷歌搜索很多。

让我解释一下:客户刚刚要我创建3个新网站,其中包含原始网站的内容(他希望将原始网站分成三个新网站)。他们都使用WordPress。

现在三个域都准备好了,我必须使用.htaccess将原始站点的所有页面重定向到新的网站页面。

Example:

在原始网站上,我有一个名为“FAQ”的自定义帖子类型,其URL如下所示:

https://old-site.fr/?faqs=name-of-my-question/

我希望它重定向到:

https://faq.new-site.com/name-of-my-question/

我试过301重定向但没有任何效果。

这是我尝试的最后一种语法:

Redirect 301 ^/?faqs=name-of-my-question https://faq.new-site.com/name-of-my-question

这是完整的.htaccess代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Redirect 301 ^/index.php?faqs=name-of-my-question https://faq.new-site.com/name-of-my-question

</IfModule>

# END WordPress

仍然没有......我如何检查是否启用了mod_rewrite?

什么都行不通......我需要帮助!

wordpress .htaccess redirect query-string
2个回答
0
投票

也许试试这个:

Redirect 301 ^/index.php?faqs=name-of-my-question https://faq.new-site.com/name-of-my-question

或者只是尝试完整的网址来调试,如果是mod_rewrite问题,例如。

Redirect 301 https://old-site.fr/?faqs=name-of-my-question/ https://faq.new-site.com/name-of-my-question

还要检查RewriteEngine On和规则是否在WordPress生成规则之前或之前。


0
投票

这是我尝试的最后一种语法:

Redirect 301 ^/?faqs=name-of-my-question https://faq.new-site.com/name-of-my-question

mod_alias Redirect指令与查询字符串不匹配,因此永远不会匹配。而第二个论点不是正则表达式,所以^/?无效。

要匹配查询字符串,您需要使用mod_rewrite(RewriteRuleRewriteCond指令)。既然你使用的是WordPress,它有自己的mod_rewrite指令,那么你也必须使用mod_rewrite。 (不建议混合mod_alias和mod_rewrite中的重定向,因为您可能会遇到意外冲突。)

您添加到.htaccess的任何重定向必须在现有的WordPress指令之前。即。在# BEGIN WordPress部分之前。

尝试类似以下内容:

# REDIRECT: https://old-site.fr/?faqs=name-of-my-question/
#       TO: https://faq.new-site.com/name-of-my-question/
RewriteCond %{HTTP_HOST} ^old-site\.fr [NC]
RewriteCond %{QUERY_STRING} ^faqs=name-of-my-question/
RewriteRule ^$ https://faq.new-site.com/name-of-my-question/ [R=302,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
:

如果name-of-my-question只是一个问题的占位符,那么你可以做一个更广泛的问题,如下所示:

# REDIRECT: https://old-site.fr/?faqs=<any-question>/
#       TO: https://faq.new-site.com/<any-question>/
RewriteCond %{HTTP_HOST} ^old-site\.fr [NC]
RewriteCond %{QUERY_STRING} ^faqs=([a-z-]+)/
RewriteRule ^$ https://faq.new-site.com/%1/ [R=302,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
:

如果old-site.frnew-site.com驻留在不同的服务器上,那么您可以删除检查HTTP_HOST的初始条件。

第二个%1替换中的RewriteRule反向引用从查询字符串中捕获<name-of-my-question>

请注意,这些是302(临时)重定向。一旦你测试它工作正常(以避免缓存问题),只将它改为301(永久) - 如果它确实是永久性的。


更新:

......它没用。

尝试将RewriteRule模式从^$更改为^(index\.php)?$。换一种说法:

RewriteRule ^(index\.php)?$ https://faq.new-site.com/name-of-my-question/ [R=302,L]
© www.soinside.com 2019 - 2024. All rights reserved.