站点迁移后 Wordpress 永久链接不再有效

Wordpress permalinks no longer work after site migration

站点迁移后,新站点 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 设置的默认域名。

有些地方可能会出错。

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

我认为这也不是您的数据库问题。一定要试试,让我们知道进展如何!

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

  1. 到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>   

  1. 转到 Windows 主机文件并添加:

 127.0.0.1  my-website.dev

  1. 转到您的 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 服务器

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

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

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

最后去浏览器输入你的新url:my-website.dev

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