子目录到根目录迁移后的固定链接404

时间:2017-03-20 作者:Rwth

我最初将wordpress安装在名为/blog的子目录中。今天我决定更改我网站的URL,从URL中删除/blog元素,例如从www.mywebsite中删除。com/blog至www.mywebsite。com。以下是我所做的:

转到“设置”>“常规”并更改了网站地址:WordPress地址(URL):www.mywebsite。com/博客

网站地址(URL):www.mywebsite。com公司

删除了我的原始主页(index.html)

下载了索引。php文件,并将副本上载到根目录

打开索引。php文件,并更改了以下代码行:

要求(目录名(FILE ) . \'/wp博客标题。php’)

    require( dirname( __FILE__ ) . \'/blog/wp-blog-header.php\' );
我现在直接登陆我的wordpress博客,当我输入www.mywebsite时,这就奏效了。com,但我的所有内部链接都导致了404个错误。因此,我将永久链接改为普通链接(例如wwww.mywebsite.com/?p=123),从而修复了断开的链接。但是,我更喜欢使用帖子名称结构(例如wwww.mywebsite.com/name of post),因此尝试通过执行以下操作来解决此问题:

创建了一个名为的文件。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
这出了可怕的错误,导致500个错误,在一段时间内将my锁定在WP仪表板之外。我记不清我是如何修复的,但我唯一做的其他更改如下:

编辑的网站。/blog目录中的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>"
这仍然不允许帖子名永久链接,所以我将永久链接设置回普通。然而,我现在有一个奇怪的情况,我的内部链接有一半工作正常,另一半导致404。我真的不明白这是怎么可能的,因为我会认为这是全部还是全部!

有人能帮忙吗?

更新-现已解决(耶!):在努力解决这个问题后,我联系了提供我的web托管的公司的支持热线。他们说我在windows服务器上的事实是有问题的,因为它与WordPress不兼容。这就是我/他们所做的:

打电话给我的web主机提供商,改为LINUX服务器下载了免费的FTP应用程序FileZilla,并将我的所有wordpress文件导入我的计算机。然后,我通过FTP将它们传输到新的LINUX服务器的根目录(public\\u html)中

  • 从旧的windows服务器导出我的WordPress数据库并保存到我的计算机上。然后,我在新的LINUX服务器上创建了一个新的数据库,并导入了WordPress数据库(我必须承认这里出了问题,所以支持人员最终为我做了这件事)
  • 我的web主机提供商然后推送了LINUX站点的live(再次,这里出了问题,所以需要再次打电话让他们解决问题)
  • 使用插件“Velvet Blues Update URL”更新www.mywebsite的所有实例。com/blog至www.mywebsite。com中的帖子、链接和附件(即,在我这样做之前,图像不会显示)
  • 打开permalinks并检查它是否正常工作
  • 这有点像一个宫殿,但最终达到了目的。我相信有很多更简单的方法来实现这一点,但我发布这个解决方案是为了让像我这样的非技术人员意识到,他们可以拨打他们的web托管平台的帮助热线,而不是试图挣扎。

    2 个回复
    SO网友:Pratik bhatt

    请使用PhpMyAdmin在数据库中使用此查询

    UPDATE wp_options SET option_value = REPLACE(option_value, \'oldsite.com\', \'newsite.com\'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, \'oldsite.com\', \'newsite.com\'); UPDATE wp_posts SET post_content = REPLACE(post_content, \'oldsite.com\', \'newsite.com\'); UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, \'oldsite.com\', \'newsite.com\'); UPDATE wp_posts SET guid = REPLACE(guid, \'oldsite.com\', \'newsite.com\');

    这会将您的所有URL更改为新URL。

    SO网友:bynicolas

    您还需要更新数据库中的所有链接

    你需要使用Search-Replace-DB 为此,do not modify the database manually

    当您使用该软件时,您将尝试搜索字符串,如

    http://www.example.com/blog/ 并将其替换为http://www.example.com/

    您还可以尝试查找绝对目录路径并进行更新

    /var/www/mysite/html/blog//var/www/mysite/html/

    您不应该弄乱模板文件或任何其他PHP文件。但这将是一个具体情况。

    Disclaimer

    使用时要小心,始终对数据库(和文件)进行良好的备份Search-Replace-DB 在替换字符串中弄乱了某些内容,可能会严重破坏数据库。。。如果发生这种情况,只需恢复数据库备份,然后重试。

    Be sure to delete the folder containing Search-Replace-DB when you\'re done for security reasons

    相关推荐

    Permalinks - Archives

    WordPress文档说:WordPress offers you the ability to create a custom URL structure for your permalinks and archives. https://codex.wordpress.org/Settings_Permalinks_Screen 我看到此屏幕将如何为特定帖子/页面创建永久链接,但我没有看到此设置屏幕上关于如何为存档帖子/页面创建链接的任何其他详细信息。有人能澄清一下吗?