.htaccess / apache-尝试静默重定向到基于子域的文件时出现“ 404错误”

时间:2019-02-28 04:36:19

标签: apache .htaccess

我有http://s.example.com。我希望http://s.ioixd.example.com通过代理以静默方式重定向到文件夹“ / sites / ioixd /”。所以我在.htaccess中的/ sites /中有此规则(因为s。*。example.com重定向到该文件夹​​)

RewriteEngine on
RewriteCond %{HTTP_HOST} s\.(.*)\.example\.com$ [NC]
RewriteRule ^(.*)$ http://s.example.com/sites/%1/$1 [L,P]

仅[L]即可正常工作。当我将其更改为[L,P]时出现问题(因为我希望它是静默/代理重定向),并且出现此错误:

  

未找到

     

在此服务器上找不到请求的URL /index.html。

     
     

Apache / 2.4.25(Debian)服务器,位于s.ioixd.ioi-xd.net端口80

但是index.html确实存在,当我手动进入http://s.example.com/sites/ioixd时,它将显示index.html文件的内容,该文件只是单词“嘿”(用于测试)。这不可能吗?我在做什么错了?

1 个答案:

答案 0 :(得分:0)

该解决方案遍及整个Internet,但是从来没有说过一个关键的细节,这使我花了一天时间尝试使用.htaccess。

在shell中运行

sudo a2endmod vhost_alias

然后,在apache.conf中,添加以下内容:

<VirtualHost *:80>
    ServerName anything.s.example.com
    ServerAlias s.*.example.com
    VirtualDocumentRoot /var/www/example/sites/%2/
</VirtualHost>

您需要添加vhost_alias模块,否则apap将崩溃,因为它不知道如何处理“ VirtualDocumentHost”部分。 .htaccess无法以上述方式工作