Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress .htaccess指令是否向下应用于子文件夹和包含这些文件夹的子文件夹?_Wordpress_Apache_.htaccess_Mod Rewrite_Multisite - Fatal编程技术网

Wordpress .htaccess指令是否向下应用于子文件夹和包含这些文件夹的子文件夹?

Wordpress .htaccess指令是否向下应用于子文件夹和包含这些文件夹的子文件夹?,wordpress,apache,.htaccess,mod-rewrite,multisite,Wordpress,Apache,.htaccess,Mod Rewrite,Multisite,我有下面详细介绍的.htaccess文件,其中包含针对HTTP\u REFERER、HTTP\u USER\u AGENT和WordPress的某些指令 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} acertainwebsite\.com [NC,OR] RewriteCond %{HTTP_USER_AGENT} acertainwebsite.com [NC] RewriteRule

我有下面详细介绍的.htaccess文件,其中包含针对HTTP\u REFERER、HTTP\u USER\u AGENT和WordPress的某些指令

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} acertainwebsite\.com [NC,OR]
RewriteCond %{HTTP_USER_AGENT} acertainwebsite.com [NC]
RewriteRule .* - [F]

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).*) wordpress/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L]
RewriteRule . index.php [L]
</IfModule>

重新启动发动机
重写Cond%{HTTP_REFERER}acertain网站\.com[NC,或]
RewriteCond%{HTTP_USER_AGENT}acertain网站[NC]
重写规则。*-[F]
重写基/
重写规则^index\.php$-[L]
#在/wp admin中添加尾部斜杠
重写规则^([_0-9a-zA-Z-]+/)?wp admin$$1wp admin/[R=301,L]
RewriteCond%{REQUEST_FILENAME}-f[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^-[L]
重写规则^([[u 0-9a-zA-Z-]+/)?(wp-(内容|管理|包括)。*)wordpress/$2[L]
重写规则^([[u 0-9a-zA-Z-]+/)?(.\.php)$wordpress/$2[L]
重写规则。index.php[L]
我正在用FreeBSD运行VPS。我不确定如何测试root.htaccess文件中的RewriteCond%{HTTP\u REFERER}和RewriteCond%{HTTP\u USER\u AGENT}指令是否在较低级别的子目录中强制执行

Wordpress 4.1.1的最新版本。安装时使用子目录结构选项打开/启用多站点选项

我怀疑一些推荐人流量可能正在通过根目录下的.htaccess文件。我在某处读到.htaccess文件中的指令向上级联,Apache首先在子目录中查找,然后在父目录中查找,然后在父目录中查找父目录

这就是问题所在。我是否必须将.htaccess文件放在多站点安装的每个子目录中?或者我可以在多站点安装的根目录中使用单个.htaccess文件吗

如果我必须在每个多站点域子目录中都有一个.htaccess文件,那么在子目录中放置一个空的.htaccess文件就足够了吗?这是否会触发向上级联以检查执行情况


如果你有一个很好的解释,这可能是如何工作,或参考另一个来源,更好地解释它,让我知道。谢谢

htaccess文件在父目录和子目录之间的工作方式实际上取决于指令。有些指令使用父htaccess指令,并且只在子目录中应用这些指令中更严格的子集(如涉及权限的指令),而有些指令,子目录完全优先于父htaccess中的任何指令(如mod_rewrite)

mod_rewrite的问题是,如果子目录的htaccess文件中有规则,则只会执行这些规则。父级htaccess文件中的任何规则都将被完全忽略,除非子目录中包含一些变体
RewriteOptions Inherit
,以包含父级htaccess规则。在Apache2.2中,继承规则仅意味着将父规则附加到子目录中规则的末尾,而2.4允许更具体的父规则附加/前置

如果您在子目录中有一个应用程序,如wordpress,那么这些规则将生效,而父目录中的任何规则都将被完全忽略(如referer规则)。如果要应用这些规则,您需要做的是将它们复制到子目录htaccess文件中(在本例中,将它们放在已经存在的任何规则之上)

如果子文件夹中包含htaccess文件(或不包含htaccess文件),且没有任何重写规则,则父目录中的规则将生效