Apache2.4 mod_rewrite 不会根据访问域将我重定向到子目录

Apache2.4 mod_rewrite 不会根据访问域将我重定向到子目录

我有一个 Apache2.4 服务器,其中有公共目录/var/www/html。在该目录中,我有一个 Wordpress 网站,其内容如下.htaccess

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

同一水平wp 站点有一个带有 RESTful API 的子目录/var/www/html/api/

以及一个临时登陆页面/var/www/html/temp/

我想要实现的目标是:

  • 当用户访问mydomain.com或时www.mydomain.com,他应该看到登录页面,temp因为它是根

  • 当用户使用纯 IP 访问服务器时,他应该看到 wordpress 博客(即xxx.xxx.xxx.xxx/显示为博客根目录)并且应该以相同的方式访问 api(xxx.xxx.xxx.xxx/api/...

我尝试过很多组合,.htaccess例如:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ temp [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

但没有结果。有什么建议吗?提前谢谢。

答案1

首先,如果你有权访问服务器配置,则不应使用 .htaccess,因为它减慢你的 Apache 速度。此外,使用两个独立的虚拟主机来处理这个问题要容易得多。

1)/etc/apache2/sites-enabled/000-default(针对IP和未指定的主机名):

<VirtualHost *:80>
        DocumentRoot /var/www/html
</VirtualHost>

2)/etc/apache2/sites-enabled/example.com针对您的 example.com 和 www.example.com。

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/html/temp
</VirtualHost>

相关内容