我有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文件的内容,该文件只是单词“嘿”(用于测试)。这不可能吗?我在做什么错了?
答案 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无法以上述方式工作