将WordPress网站从主机移至本地主机后,相关链接停止工作

时间:2017-05-20 作者:rok

将网站移动到本地开发人员机器后,相关链接停止工作。例如,当我单击带有相对链接/登录的按钮时,浏览器会重定向到

https://localhost/login/

和显示

代码:未找到

请求的URL/索引。在此服务器上找不到php。

而它应该重定向到https://localhost/сс/login/

。htaccess本地主机上的内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cc/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cc/index.php [L]
</IfModule>
网站文件位于var/lib/html/cc文件夹中SiteURL和HomeUrl都等于http://localhost/ссParmalinks设置http://localhost/cc/sample-post/,因此导航到页面没有问题如何解决此问题?

尝试了不同的方法。htaccess修改,移动索引。php到var/lib没有任何帮助。

2 个回复
SO网友:cybmeta

如果你在https://localhost/cc 使用相对lnkhref="/login" (相对于当前域/站点),浏览器(而不是WordPress)将带您访问https://localhost/login; 如果链接是href="login" (相对于当前路径)浏览器将带您访问https://localhost/cc/login.

相对链接就是这样工作的,与WordPress无关。这就是为什么许多开发人员喜欢使用绝对链接,也喜欢使用WordPress。您可以获取主url并附加所需的路径,如下所示:

// See https://developer.wordpress.org/reference/functions/home_url/
// Outputs http:://example.com/login
$login_url = home_url( \'login\' );
如果您喜欢相对路径:

// Outputs /login
$login_url = home_url( \'login\', \'relative\' );
使用此方法的好处是,可以获得相对于当前站点的路径,而不是相对于当前路径的路径。所以,如果你在https://localhost/cc 你会得到这个结果(如果你仍然使用相对链接,我认为这对你有用):

// If we are in `https://localhost/cc`
// Outputs /cc/login
$login_url = home_url( \'login\', \'relative\' );

SO网友:rok

正如MrWhite所建议的,以下步骤解决了问题:

(1)Adding vhost block to apache2.conf configuration file of Apache.

NameVirtualHost 192.168.1.10:80
<VirtualHost 192.168.1.10:80>
   ServerName local.site.com
   DocumentRoot "/var/www/html/local.site"
</VirtualHost>
您可以访问www/html/local。site是本地计算机上所有网站文件所在的文件夹Adding the following entry to /etc/hosts

192.168.1.10本地。地点com公司

符合注释here

在Apache服务器上创建虚拟主机配置不会神奇地导致为这些主机名创建DNS条目。您必须在DNS中拥有名称,并解析为您的IP地址,否则其他人将无法看到您的网站。您可以在主机文件中放置条目以进行本地测试,但这只能从具有这些主机条目的计算机中进行。

(3)Using the same .htaccess from the staging website

主要包括以下内容:

# 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>
可能有更多来自安全wordpress插件的指令。如果他们使用登台网站url,如:

#AIOWPS_PREVENT_IMAGE_HOTLINKS_START
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \\.(gif|jpe?g?|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://site.com [NC]
RewriteRule \\.(gif|jpe?g?|png)$ - [F,NC,L]
</IfModule>
RewriteCond %{HTTP_REFERER} !^http(s)?://site.com [NC] 应替换为RewriteCond %{HTTP_REFERER} !^http(s)?://local.site.com [NC]

所有步骤均在以下步骤之后运行:

将站点代码库克隆到本地开发环境

将mysql转储导入本地mysql db

使用wp-cli 用本地搜索并替换临时站点url。地点com

结束

相关推荐

每页更改帖子导致404分页。需要重定向HTAccess规则

我现在更改了我的wp主题,并更改了“阅读”上的“每页帖子”wp设置,因为我想在归档页面上显示更多帖子。我对档案进行分页,所以很多页面都消失了。现在google web master tools向我显示了大量404错误。例如,/author/max/page/150/now 404s。在众多的文件夹(/作者/,/类别/,等等)中有许多这样的内容我不能简单地重定向/page/as(例如)/author/max/page/100/是有效页面。我想做的是说,“如果*/page/xxx=404,那么重定向到/pag