21今天突然手闲,想试试传闻已久的WordPress多站点模式(WordPress Multisite),于是用手上的一个DirectSpace年付的VPS(性能?淡定……)临时搭建了一个LAMP,按照WordPress Codex的操作一步一步对WordPress进行修改,按照子目录的形式最后写入 .htaccess 并建立了子站点,但是出现一个问题,子站点可以访问,但是无法加载CSS和图片等东西。
初步判断应该是 .htaccess 里面Rewrite规则可能有问题,但那是官方提供的,不应该吧……
于是通过Google大神一番搜索,确定是Rewrite规则有问题,并将 .htaccess 文件替换为以下内容后工作正常:
WordPress Multisite Based Sub-folder Mode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] |
————————————————我是分割线————————————————
我刚才重新弄了一下想重演故障,结果发现没问题了,记得看过一篇POST提到WP有个缓存机制导致了这个问题,不过我把 .htaccess 更新了以上代码后,就工作正常了,一时也没留意是否跟WP给出的范例代码是否有所不同,纠结了……放这儿备查吧。
————————————————我是分割线————————————————
Update: Jan 13th, 2011
终于发现问题所在了,由于我手欠,没有使用启用Network功能时 /wp-admin/network.php 提供的 .htaccess 内容,而直接使用了Codex.WordPress提供的Rewrite规则,于是 ……
来自Codex.WordPress的Rewrite规则呈现如下(无法工作的,仅供参考,别用……):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] RewriteRule . index.php [L] # END WordPress |
主要区别在于以下两句,正好影响到的是主题布景(Theme)、后台管理等功能:
有效的规则:
12 RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]无效的规则:
12 RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
-EOF-
——————–
引用参考:
WordPress Support: http://wordpress.org/support/topic/wp-multisite-htaccess-not-working
Perishable Pre: http://perishablepress.com/press/2010/07/07/htaccess-code-for-wordpress-multisite/
WordPress Codex: http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite
WordPress Codex: http://codex.wordpress.org/Create_A_Network