htaccess 更改重写规则以覆盖常见特定文件夹的 WP 多站点
htaccess Change rewrite rules to override WP multisite for common specific folders
我有几个托管客户端和几个子域客户端,我想写 .htaccess 或 php.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]
。它会匹配任何东西。将您的规则上移。
我有几个托管客户端和几个子域客户端,我想写 .htaccess 或 php.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]
。它会匹配任何东西。将您的规则上移。