htaccess 更改重写规则以覆盖常见特定文件夹的 WP 多站点

htaccess Change rewrite rules to override WP multisite for common specific folders

我有几个托管客户端和几个子域客户端,我想写 .htaccessphp.ini允许这些站点中的每一个站点(包括我的根站点)访问公共文件夹的规则 (/home/usr/public_html/public_scripts/) public 客户 (/home/usr/public_html/subdomains/client/) 或 (/home/usr/public_html/hosts/clients/) 在 ftp 中看不到,但根站点可以:

/home/usr
    |--/public_html
        |--/public_scripts/
        |
        |--/hosts
        |    |--/client
        |        |--/subdomains
        |
        |--/subdomains
            |--client

这样我就可以使用这个文件夹了:

www.mydomain.com/public_scripts/
subdomain.mydomain.com/public_scripts/
www.theirdomain.com/public_scripts/
subdomain.theirdomain.com/public_scripts/

我试过:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^common/(.*)$ /home/usr/public_html/public_scripts/ [QSA]
</IfModule>

但这没有用。它只是重定向到 /index.php

共享主机,所以我无权访问 httpd-conf 文件。我可以访问 php.ini

当我关闭 WP 规则时它匹配正确。我的站点中同时有子域和域映射,但我不确定我是否需要 wp 这两个部分,或者我是否可以将所有三个部分合并为一个重写规则。

编辑:这是我正在使用的重写规则,现在我意识到我在使用 wordpress HTACCESS:

<IfModule mod_rewrite.c>
# BEGIN Wordpress
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).*)  [L]
RewriteRule ^(.*\.php)$  [L]
RewriteRule . index.php [L]
# END Wordpress
</IfModule>
<IfModule mod_rewrite.c>
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^common/(.*)$ /home/usr/public_html/public_scripts/ [QSA]
</IfModule>

AddHandler application/x-apple-aspen-config .mobileconfig

但这没有用。它只是重定向到 /index.php

共享主机,所以我无权访问 httpd-conf 文件。我可以访问 php.ini

关闭WP规则后匹配正确。我的站点中同时有子域和域映射,但我不确定我是否需要 wp 这两个部分,或者我是否可以将所有三个部分合并为一个重写规则。

这是 "working" htaccess。哪天我有时间再整理这些:

<IfModule mod_rewrite.c>
# BEGIN Wordpress
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).*)  [L]
RewriteRule ^(.*\.php)$  [L]
RewriteRule . index.php [L]
# END Wordpress
</IfModule>
<IfModule mod_rewrite.c>
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# END WordPress

RewriteRule ^common/(.*)$ /home/usr/public_html/public_scripts/ [QSA]

# BEGIN WORDPRESS
RewriteRule . /index.php [L]
# END WORDPRESS
</IfModule>
AddHandler application/x-apple-aspen-config .mobileconfig

似乎这条规则是包罗万象的:RewriteRule . /index.php [L]。它会匹配任何东西。将您的规则上移。