Php 移动到子目录后WordPress重定向不起作用

Php 移动到子目录后WordPress重定向不起作用,php,wordpress,.htaccess,redirect,http-status-code-301,Php,Wordpress,.htaccess,Redirect,Http Status Code 301,今天我把我的wordpress网站从根目录移到了同一个域中的子目录。我将所有文件移动到新的子目录。我还设置了托管cpanel的301通配符重定向 301通配符重定向设置- 旧地址-https://www.example.com 新地址-https://www.example.com/blog/ 当我直接访问任何帖子时,如https://www.example.com/blog/this-is-a-post然后它会显示正确的文章,没有任何错误,但当我在没有“blog”的情况下打开同一篇文章时会出现

今天我把我的wordpress网站从根目录移到了同一个域中的子目录。我将所有文件移动到新的子目录。我还设置了托管cpanel的301通配符重定向

301通配符重定向设置-

旧地址-
https://www.example.com

新地址-
https://www.example.com/blog/

当我直接访问任何帖子时,如
https://www.example.com/blog/this-is-a-post
然后它会显示正确的文章,没有任何错误,但当我在没有“blog”的情况下打开同一篇文章时会出现问题单词,即
https://www.example.com/this-is-a-post
然后它也会显示正确的帖子,而不是将其重定向到
https://www.example.com/blog/this-is-a-post

当我通过谷歌访问时,它只访问旧地址,即没有“博客”这个词

还有一件事正在发生,那就是重定向
https://www.example.com
https://www.example.com/blog
这也是我不想要的,因为我的主页有不同的html索引文件

Wordpress仪表板中的URL设置-

WordPress地址(URL)-
https://www.example.com/blog

网站地址(URL)-
https://www.example.com/blog

文件
.htaccess
的内容:

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

# END WordPress
#开始WordPress
重新启动发动机
重写库/博客/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/blog/index.php[L]
#结束WordPress

从根目录中删除wordpress的.htaccess和index.php文件,并从cpanel中删除301重定向后。。问题已经解决了。现在我在roodex.com上有不同的欢迎页面,在roodex上有wordpress博客,com/blog,但现在的问题是,当通过谷歌搜索结果访问时,谷歌会显示旧的帖子url链接,访问后会显示“未找到”,而不是重定向到新的url。

假设您只提供来自站点根目录的静态文件(即,您没有虚拟URL和WordPress这样的前端控制器),那么您所能做的就是重定向对根目录的任何请求(在
/blog
之外),该目录不映射到物理文件,转到您的
/blog
子目录,并希望一切顺利。如果该URL在WordPress中也不存在,那么您将只获得WordPress的404页面

我假设您在
/blog
子目录中有一个
.htaccess
文件来处理WordPress请求

因此,在站点根目录下的
.htaccess
文件中(我认为现在是空的),尝试以下操作:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !blog/ /blog%{REQUEST_URI} [R=302,L]

当您确定正常工作时,将
302
(临时)重定向更改为
301
(永久)重定向。浏览器会硬缓存301s,因此可能会导致测试出现问题。

请包含
.htaccess
文件的内容。cPanel重定向非常基本且容易出错,它也可能将指令放在错误的位置(如果您使用的是WordPress)。是的,我添加了.htaccess文件的内容,在通过cPanel/blog/添加301通配符重定向后,会自动添加到它中。您是否访问了
/wp admin/permalinks
页面?那一个经常有用。您是否尝试过隐姓埋名模式进行测试?我觉得很好。您的浏览器中可能缓存了某些内容。请访问/wp admin/permalinks/并再次单击“保存”。无论出于什么原因,这在过去对我来说都是有效的。在从根目录中删除wordpress的.htaccess和index.php文件以及从cpanel中删除301重定向之后。。问题已经解决了。现在我在roodex.com上有不同的欢迎页面,在roodex.com/blog上有wordpress博客,但现在的问题是,当通过谷歌搜索结果访问时,谷歌会显示旧的帖子url链接,访问后,它会显示“未找到”,而不是重定向到新的url。是的,它开始重定向。如果我在根目录中安装另一个php脚本、登录页或另一个wordpress cms,会不会产生问题?如果你安装一个使用前端控制器类型模式的脚本(其中所有不存在的/虚拟URL都被重写为处理路由的脚本),这几乎包括所有cms,会导致问题。因为这样您就不能盲目地将所有不存在的URL重定向到您的
/blog
子目录。但是,如果您的CMS允许,您可能可以使用CMS的404重定向(而不是
.htaccess
)。或者,您可以单独重定向所有旧URL,除非对旧URL有特定的模式(这将允许您创建单个规则)。如果这回答了您的问题,请通过选中左侧的绿色勾号接受上述答案。你也可以投票选出你认为有用的答案。非常感谢,谢谢。