Wordpress multisite htaccess

时间:2013-02-11 作者:Cody New

我将Wordpress设置为一个多站点,作为步骤的一部分,它给出了一些更新和替换的指示。htaccess文件。

Wordpress指示我将htaccess替换为:

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).*) $1 [L]
RewriteRule ^(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]
然而,这导致插件上的一些jquery中断。

我认为这可能很有用,但有人能帮助我们深入了解每一行的功能吗?

尤其是这一行:

RewriteRule ^(.*\\.php)$ $1 [L]
如果我删除这一行,我的插件就可以正常工作。

提前感谢:)

2 个回复
SO网友:KenB

我一直在寻找关于为什么建议使用子域进行多站点安装的详细信息。实际上,我怀疑这两者是否都与子域安装相关:

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\\.php)$ $1 [L]
在子目录安装中,设置的规则略有不同,可以从请求中删除子目录名称,如下所示:

RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
我在错误日志中看到一个重定向循环,这是由这些规则的第一个版本引起的,因为替换文本与原始文本相同。我发现一些证据表明,mod\\u rewrite的某些版本会检测到原始文本和新文本是相同的,并跳过结果的重新插入。(不知道我现在读了多少链接中的哪一个。)

我认为将URI重写为与原始URI相同,从而将链接重新插入重写引擎没有任何价值。删除规则后,我得到的是预期的404页,而不是重定向循环,当超过重定向限制时,重定向循环将以500服务器错误结束。

另请注意,我认为建议的子目录版本也已损坏。因为它使用? 对于子目录部分,它将在输入URL上循环,如no-such-file.php. 子目录部分上的匹配不应允许零拷贝,因此规则可能是:

 RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
 RewriteRule  ^[_0-9a-zA-Z-]+/(.*\\.php)$ $1 [L]
类似的结论如下:https://wordpress.stackexchange.com/a/73185/27576

SO网友:Mike Madern

RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
重定向http://yourdomain.ext/wp-adminhttp://yourdomain.ext/wp-admin/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
条件逻辑,检查请求的文件名是否为not现有文件(-f) 或目录(-d).

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
重定向wp-content.ext, wp-admin.extwp-includes.ext 文件本身,无论此文件是否存在。

RewriteRule ^(.*\\.php)$ $1 [L]
重定向任意.php 文件到该文件,无论该文件是否存在。

RewriteRule . index.php [L]
将所有内容重定向到index.php.

基本上.htaccess 将每个请求的文件重定向到该特定文件,并将每个目录重定向到index.php.

请仔细阅读detailed mod_rewrite documentation 有关重写引擎如何工作的详细信息。

结束