将多站点移动到新服务器后重定向固定链接问题(&P)

时间:2014-01-26 作者:Evan Mattson

我刚刚将我的子域多站点移动到一个新服务器,我在permalinks&;方面遇到了一些问题;重定向。

移动后的一个区别是,我已将核心WP文件移动到它自己的目录中/wp (参见roots/bedrock folder structure.

现在当我尝试访问/wp/wp-admin, 我被重定向到/wp-login.php?redirect_to=... 当然是404,因为该文件不存在。

但是,如果我在配置中注释掉多站点常量,我可以作为非多站点访问wp admin,而不会出现问题(这就是我如何确保我拥有下面的权限。htaccess-来自工具>网络设置)。

我有.htaccess 使用WP为多站点指示的规则进行设置:

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) wp/$1 [L]
RewriteRule ^(.*\\.php)$ wp/$1 [L]
RewriteRule . index.php [L]
另一个问题是,即使关闭了multisite,当我尝试转到主页以外的任何页面时,也会得到404。

我读到multisite在DB中存储了一些路径信息,所以可能需要搜索/替换?

更新1时,我能够解决*在尝试访问wp admin时重定向到404的问题。这仅仅是由于需要在数据库中对siteurl. 我知道这个价值观was superceeded by the WP_SITEURL constant. 多站点的情况似乎并非如此,可能是因为每个站点的情况都不同。一旦我纠正了siteurl 在每个站点的选项表中,该站点将起作用(可以联系wp admin)。

2个问题仍然存在Permalinks are still not working as they should. 现在我可以访问wp admin了,我已经进入并重新保存以更新permalink结构,这似乎没有任何效果。我的意思是,当我导航到任何远离该网站首页的地方时,我会得到404。

  • Network admin is inaccessible via the admin bar. 它提供给我的网络管理员的URL缺少/wp 目录如果我直接访问它,/wp/wp-admin/network/ -- 它起作用了。出于某种原因,管理栏中生成的URL缺少此URL,并且已断开。如果我改变define(\'PATH_CURRENT_SITE\', \'/\');define(\'PATH_CURRENT_SITE\', \'/wp/\');, 这些URL是正确的,但尝试访问它们失败。在这种情况下,这似乎不是正确的做法,正如人们所期望的那样/wp-admin/network/setup.php.经过一些挖掘,我发现这些链接是由network_admin_url(). 基本上,负责的代码行是set_url_scheme( \'http://\' . $current_site->domain . $current_site->path, $scheme ); 从…起network_site_url().

    更新2我能够解决permalink问题。事实证明,这实际上是apache中的虚拟主机配置!我有AllowOverride none 为我的网站设置<Directory> 指令,我认为这阻止了任何。htaccess重写规则。我早该意识到这是事实,因为我得到的404是来自apache,而不是wordpress。。。

    此时唯一剩下的奇怪之处是network_admin_url(). 如果我弄明白了,我会发布一个答案。

  • 2 个回复
    SO网友:T.Todua

    嗯,答案有几种不同的方式。。

    ===方法1==

    (当您希望您的网站永久链接example.com/wp/smth )

    如果是,只需更改以下内容:

     RewriteBase /
    

     RewriteBase /wp
    
    在数据库中,更改example.com/example.com/wp/

    ===方法2==

    (当您希望网站永久链接保持不变时example.com/smth )

    现在您有了A和B方法(正如您所说,您已经手动对DB进行了一些更改…将它们还原回来并继续读取…):
    A)你应该把所有东西从wp 文件夹到public\\u html文件夹
    B)仅用于.htaccess 解决问题的技巧,您可以将所有文件放入根目录>wp 文件夹:

    <IfModule mod_rewrite.c>
    # move primary domain to subfolder
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(www.)?example.com$
    RewriteCond %{REQUEST_URI} !^/wp/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /wp/$1
    RewriteCond %{HTTP_HOST} ^(www.)?example.com$
    RewriteRule ^(/)?$ wp/index.php [L] 
    </IfModule>
    
    只要换一下example.com 并将此htaccess放入PUBLIC\\u HTML文件夹(所以,wordpress.htaccess 应该在wp 文件夹)

    SO网友:markratledge

    所有WP安装(single和MS)都将URL数据存储在数据库中,用于基本配置以及帖子/页面内容中的图像和附件路径。

    您可能只需更改wp\\u选项中的一个或两个值,然后就可以返回admin。如果是,请保存/更新永久链接以重写中的规则。htaccess。

    但这两个值可能不同。WordPress地址(URL)是WordPress所在的位置,对您来说,它将是/wp/而不是root。我假设站点地址(URL)将是root,URL中没有wp。

    看见http://codex.wordpress.org/Moving_WordPress 和esp。http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory

    当您需要更改帖子/页面内容中的URL时,请使用interconnectit.com WordPress Serialized PHP Search Replace Tool 在数据库和序列化数据中正确查找/更改URL。

    如果使用Interconnect脚本,MS的问题是,子网站的数据库表前缀不同,因此需要使用phpmyadmin或adminer查看数据库,以确定子网站数量的前缀。

    结束

    相关推荐

    Custom fields in Permalinks?

    我想知道如何将自定义字段值添加到自定义帖子类型的永久链接中?例如,我有自定义的post文件ex:cpt cities。php,它处理注册自定义帖子类型和所有这些细节。在该文件中,我试图将其永久链接设置为包含一个“cities”自定义字段值。我可以使用add\\u permastruct设置永久链接。但是,我无法获取自定义字段的值,并且get\\u post\\u meta()不起作用。这可能是由于$post->ID不起作用(因为它位于自定义post类型文件中,而不是post循环)。有人知道这样一种在