Wordpress .htaccess 301重定向自/?p=blahblahblah

Wordpress .htaccess 301重定向自/?p=blahblahblah,wordpress,apache,.htaccess,Wordpress,Apache,.htaccess,我正在尝试在我转换为WordPress的站点的.htaccess文件中设置301重定向 旧站点的URL如下所示 http://www.example.com/?p=about http://www.example.com/?p=contact-us 我尝试过的重写规则如下,但都不起作用 Redirect 301 /?p=about /about/ Redirect 301 /?p=contact-us /contact-us/ Redirect 301 /?p=about http://ww

我正在尝试在我转换为WordPress的站点的.htaccess文件中设置301重定向

旧站点的URL如下所示

http://www.example.com/?p=about
http://www.example.com/?p=contact-us
我尝试过的重写规则如下,但都不起作用

Redirect 301 /?p=about /about/
Redirect 301 /?p=contact-us /contact-us/

Redirect 301 /?p=about http://www.example.com/about/
Redirect 301 /?p=contact-us http://www.example.com/contact-us/

Redirect 301 /\?p=about /about/
Redirect 301 /\?p=contact-us /contact-us/

Redirect 301 /\?p=about http://www.example.com/about/
Redirect 301 /\?p=contact-us http://www.example.com/contact-us/
看起来好像WordPress重写规则首先生效了,尽管我的301重定向规则高于WordPress重定向规则。显示的页面是blog roll页面,该页面显示“未找到任何内容”,因为我没有帖子


有什么方法可以让这些重定向正常工作吗?

你说得对:如果重定向规则放在WordPress规则之后,则不会考虑它们。这一行:

RewriteRule . /index.php [L]
将重定向所有内容,最后的le
[L]
表示这是最后一条规则

以下是您应该在
.htaccess
文件中输入的内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# old site redirections
RewriteRule /?p=about /about/ [L,R=301]
RewriteRule /?p=contact-us /contact-us/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
#旧站点重定向
重写规则/?p=about/about/[L,R=301]
重写规则/?p=联系我们/联系我们/[L,R=301]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress

您是否尝试过在浏览器中打开“私人”选项卡并查看重定向是否有效(或者尝试使用以前从未访问过该网站的浏览器)?301重定向是永久性的,大多数浏览器都会缓存它,直到它被显式清除。仍然不起作用。