我目前正在为我的公司安装WordPress多站点,我遇到了一个问题。
设置是multisite runs out of a subdirectory (/wp) 但似乎是网站的根源。它正在使用subdirectories for each site 在网络上(例如domain.com/news)。
我一直在关注wordpress。org指南,安装运行良好。问题是,我发现我需要为WordPress添加的mod\\u重写会导致任何问题。/cgi-bin文件夹中的pl脚本停止工作(错误403)。我知道它们非常古老;我想把它们换成更好的表单脚本,但这是下一次的战斗。cgi-bin脚本对业务非常重要,因此在找到解决方案之前,我无法继续进行任何WordPress开发。
我找到的解决方案是针对非多站点Wordpress的,似乎对我的设置不起作用。我不太熟悉。htaccess和mod\\u重写,所以我不确定应该做什么。
下面是我需要添加到的代码。htaccess位于站点根目录:
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [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).*) wp/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ wp/$2 [L]
RewriteRule . index.php [L]
我想我应该添加这样一条规则来让它忽略/cgi-bin:
RewriteCond %{REQUEST_URI} !^/cgi-bin/
但要么这是错误的规则,要么我把它放错地方了。有人能帮我弄清楚吗?
最合适的回答,由SO网友:Faeldray 整理而成
事实证明,问题不是WP per say,而是由于某些服务器设置,mod\\u重写被禁止。直到服务器人员发送了一个错误日志,日志中充满了包含以下内容的消息,我才意识到这一点:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden
为了使其正常工作,他必须在其中一个服务器配置文件中激活以下Symlinks和SymlinksFownerMatch(我不确定是哪一个):
<Directory [REMOVED]>
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
#Options None
Order allow,deny
Allow from all
</Directory>