ReWriteRules和WordPress带子目录的多站点

时间:2012-11-30 作者:Nick

我很难为Wordpress 3.4.2(截至本文的最新版本)启用多站点的博客设置重写规则和URL结构。

www.ourdomain。com/是电子商务网站的主页。

我们也有www。我们的域名。com/example-category/andwww。我们的域名。com/示例产品/

作为我们的类别和产品URL结构。这一切都在起作用。

我已经在物理文件夹/var/www/ourdomain/wordpress中安装了wordpress文件。现在,www.ourdomain。com/wordpress/转到默认博客。www.ourdomain。com/wordpress/blog1是第一个博客和www.ourdomain。其次是com/wordpress/blog2。

我已经通过添加

ReWriteRule ^/wordpress - [L,NC]
到我们的vhost文件(.htaccess是diasabled)。

我们的目的是(用户)直接请求www.ourdomain.com/wordpress(/*) 重定向到主页www.ourdomain.com//wordpress 文件夹只是用来存储文件,而不是作为用户访问的实际博客。

请求www.ourdomain.com/blog/ 应自动重定向到www.ourdomain.com/wordpress/blog1. 请求www.ourdomain.com/policies/ 应自动重定向到www.ourdomain.com/wordpress/blog2.

因此:

/wordpress/ -> 301 /
/blog/ -> silent /wordpress/blog1
/policies/ -> silent /wordpress/blog2
这在理论上似乎很简单,但在实践中却不那么简单。

我从以下内容开始:

ReWriteRule ^/wordpress - [L,NC]
RewriteRule ^/blog/(.*)$ /wordpress/blog/$1 [L,NC]  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/blog/ /wordpress/blog/index.php [L]
结果是404 at/blog/。当然,因为/wordpress/blog/index.php 不是文件。没有blog 中的文件夹wordpress 文件夹我要加载的文件是/wordpress/index.php, 它读取URL以确定加载哪个博客-但URL已被修改,因此此操作失败。我需要一种方法来调用/wordpress/index.php 来自URL/blog/,但使/wordpress/index.php 查看请求,就像用户转到/wordpress/blog.

有没有办法从modRewrite向PHP传递一个假URI?或者是另一种不需要安装到WordPress的单独副本就可以实现这一点的方法?

UPDATE:

由于当前版本中似乎不支持这一点,但我仍然需要在新版本发布之前进行这项工作,因此我认为一种解决方法是使用以下内容:

RewriteRule ^/blog/ /wordpress/index.php?site=blog [L]
然后修改读取URL的WordPress文件,并让它根据GET参数设置站点变量。这样行吗?哪个文件包含设置当前站点的代码?

1 个回复
SO网友:fuxia

目前,对于多站点设置,这是不可能的。这应该可以在WordPress 3.5中实现,该版本计划于下月发布。所以你唯一的解决办法是:等等

12月26日更新:这在WordPress 3.5中现在是可能的,无需进一步的破解。:)

结束

相关推荐

如何将wp-login.php重命名为MultiSite?

我想隐藏并重命名wp-login.php 在我的URL中,用于在多站点设置上创建品牌。从这个forum post 我知道我可以改变mysite.com/wp-login.php 到mysite.com/login 通过插入RewriteRule ^login$ wp-login.php 在我的.htaccess. 我喜欢URL栏不显示登录重定向到wp登录。如果我尝试在子网站下登录mysite.com/subsite1/login 它显示为重定向自mysite.com/subsite1/wp-login