网站迁移后,WordPress 永久链接不再起作用

Posted

技术标签:

【中文标题】网站迁移后,WordPress 永久链接不再起作用【英文标题】:Wordpress permalinks no longer work after site migration 【发布时间】:2015-12-22 15:50:10 【问题描述】:

站点迁移后,新站点 url 的主页会加载,但永久链接全部重定向到 Apache(我在 XAMPP 堆栈上)的默认页面:

Object not found!

The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

If you think this is a server error, please contact the webmaster.

Error 404

localhost
Apache/2.4.16 (Win32) OpenSSL/1.0.1p php/5.5.28 

我认为这不是 wordpress 数据库问题。否则,我会得到 wordpress 的默认页面未找到页面。还有什么原因造成的?是否有需要修改的 .htaccess 文件?

编辑 我使用这个脚本进行数据库迁移:https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

编辑 所以添加了来自https://codex.wordpress.org/htaccess 的默认.htaccess,它重定向到xampp 的主页。因此,这正式意味着 wordpress db/routing 中某处的永久链接结构已损坏(未正确路由)。我的新站点 url 是“localhost/somewebsite”,其中“localhost”是我的 xampp/local dns 设置的默认域名。

【问题讨论】:

嗯,数据库中永久链接的结构是什么,它们应该是什么?如果你有一个新的 url 和|或文件夹结构,我不会假设永久链接没有改变/拖累它们。 嗯,就是这样,我仍然想要相同的永久链接结构,只是使用新的站点地址。 抱歉,我在哪里可以找到 db 中的永久链接结构?它是哪个表/字段? 是的,我已经更新了 wp 选项表中的 SiteURL 和 HomeUrl 字段。事实上我使用了这个脚本:interconnectit.com/products/… 对,我大约一个月前进行了迁移,但遇到了问题。他们已排序,但为了证明事情没有丢失,我将 WP 管理仪表板中的永久链接设置更改为默认设置,即http://example.com/?p=123。试试看他们是否会回来。如果没有,我认为你有更严重的问题。 【参考方案1】:

我找到了解决方案。您必须为您的站点创建一个虚拟主机。以下是您必须执行的 4 个步骤:

    转到 C:\xampp\apache\conf\extra\httpd-vhosts.conf 并创建两个新主机。首先设置一个本地主机,这样当你想调用另一个没有虚拟主机的文件夹时:

#localhost
<VirtualHost *:80>
  DocumentRoot "C:/XAMPP/htdocs"
  ServerName localhost
</VirtualHost> 
#My Website
<VirtualHost *:80>
  DocumentRoot "C:/XAMPP/htdocs/my-website" #your path to your installation
  ServerName my-website.dev #Change my-website to your wish name/url
  ServerAlias my-website.dev #Change my-website to your wish name/url
</VirtualHost>   
    转到 Windows 主机文件并添加以下内容:

	127.0.0.1		my-website.dev
    转到您的 Wordpress .htaccess 文件并将其粘贴到其中:

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

# END WordPress

您必须保存所有文件并重新启动 Apache 和 mysql 服务器

    现在您必须将数据库中的所有 Worpdress url 更改为 http://my-website.dev(它是一个示例!您必须在此处粘贴您在 xampp 主机文件中设置的 url)。为了使这一步更容易,您必须从https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ 下载 PHP 中的数据库搜索和替换脚本。解压缩并将文件夹Search-Replace-DB-master 粘贴到C:/XAMPP/htdocs 中。 打开浏览器并转到此网址:http://localhost/Search-Replace-DB-master/。现在在数据库部分(数据库名称、用户、密码)中输入您的数据库信息。转到顶部并在replace 字段中输入您的旧网址(在我的情况下:https://my-website-old-url.com)和在with 之后的字段中您的新网址(例如:http://my-website.dev)。

现在点击页面中间的实时运行,您所有的旧网址都将被新网址替换。

您可能必须在 httpd-conf 文件中将 AllowOverride 设置为 All。您还必须检查 httpd-conf 中的 LoadModule rewrite_module modules/mod_rewrite.so 由于重写等原因,它前面没有 #...

最后转到浏览器并输入您的新网址:my-website.dev

就是这样!希望我能帮到你。

【讨论】:

【参考方案2】:

这里可能会出错。

    尝试转到您的管理页面并通过保存默认永久链接来重置您的永久链接,然后再更改回您的原始永久链接。这是因为在迁移期间,使用的永久链接似乎搞砸了,需要重置 99% 的时间,尤其是如果您安装了 woo commerce。 检查您的服务器上是否启用了该 mod 重写 确保您的 .htaccess 文件是默认的,以避免其他规则与新环境中的默认规则发生冲突

我认为这也不是您的数据库问题。试试吧,让我们知道它是怎么回事!

【讨论】:

感谢您的回复。 1)我无法访问管理员,因为从技术上讲,这是站点中的一个页面,2)启用了 mod_rewrite(phpinfo() 显示),3)wordpress 站点的根目录中没有 .htaccess。 我想你得到了答案,.htaccess 没有迁移过来?如果是这样,请使用codex.wordpress.org/htaccess上显示的默认规则添加它 请查看我的问题的更新。它没有解决问题。 如果我没记错的话,您将您的官方网站与一个域迁移到您的本地主机环境?如果是这种情况,您需要做的就是转到您的主机文件并将域名更改为您的本地 IP,以便您可以转到您的后端并重置您的永久链接。 ic,那么 xampp install for windows 7 中的 hosts 文件在哪里?

以上是关于网站迁移后,WordPress 永久链接不再起作用的主要内容,如果未能解决你的问题,请参考以下文章

sql 在wordpress安装/迁移后编辑wordpress页面内容中的永久链接

Wordpress“帖子名称”永久链接不起作用

Wordpress 永久链接在服务器上不起作用

wordpress apache永久链接不起作用(404错误)

启用永久链接后,Wordpress 在 wamp apache 上抛出 403 禁止错误?

在 Wordpress 上启用漂亮的永久链接 - apache 配置不起作用