.htaccess 和 HTTP_HOST

.htaccess and HTTP_HOST

我们有一个 Wordpress 多站点安装,每个站点都有自己的域:

出色的训练

天马行空

感知分析

在 htdocs 文件夹中,我们有一个子文件夹,其中包含我们用于其中一个站点的资产,该文件夹名为 /Aj-Isle/,非 wordpress 资产应该用于 https://fantastic-training.com/ 站点。

但是,该文件夹可用于所有 3 个域,这是我们不希望出现的行为。因此,尝试在所有 3 个域中查看文件 DOMAIN/Aj-Isle/south.png 都有效。

https://fantastic-training.com/Aj-Isle/south.png

https://fantastic-thinking.com/Aj-Isle/south.png

https://perceptionprofiling.com/Aj-Isle/south.png

有谁知道我们如何使用 htdocs 文件夹中的 .htaccess 文件来限制它,以便 Aj-Isle 文件夹仅在请求 https://fantastic-training.com/ 域时可用?

我觉得跟HTTP_HOST这个变量有关系?

基本上我知道在英语中我想创建的规则是这些...

如果您是 /Aj-Isle/ 的入站用户并且不请求 https://fantastic-training.com/Aj-Isle/ 然后重定向到目标域的根目录

如果您是 /limesurvey/ 的入站用户而不是请求 https://perceceptionprofiling.com/limesurvey/ 然后重定向到目标域的根目录

我们在 htdocs 中的 .htaccess 文件目前看起来像这样...

# BEGIN WordPress
<IfModule mod_rewrite.c>
AllowOverride All
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

提前感谢您提供的任何帮助或见解。 史蒂夫 H-B

您可以使用 RewriteCond

检查主机名
RewriteCond %{HTTP_HOST} !fantastic-training.com
RewriteRule ^Aj-Isle / [R,L]

这将检查请求的路径是否以 Aj-Isle 开头。如果没有,请继续执行以下规则。

如果确实以 Aj-Isle 开头,则根据 fantastic-training.com 检查请求的主机。如果请求的主机是 不是 fantastic-training.com,则将客户端重定向到根文件夹 (/)。

详见RewriteCond

CondPattern is usually a perl compatible regular expression, but there is additional syntax available to perform other useful tests against the Teststring:

  1. You can prefix the pattern string with a '!' character (exclamation mark) to negate the result of the condition, no matter what kind of CondPattern is used.