1

我有一个 Web 应用程序,它需要为每个公司提供动态子域。该网站也有 SSL。我在 Ubuntu VPS 上使用 apache。我所做的是我做了如下虚拟主机设置

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias *.domain.com
    Redirect permanent / https://domain.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName domain.com
    ServerAlias *.domain.com
    ..........
    .................
</VirtualHost>

将流量定向到 SSL 是可以的。

所以我现在需要做的是我的网络根目录中有一个文件夹“/app”。我希望所有子域都指向该特定文件夹并在地址栏上显示相同的 url。

我在 php 中启用了 http_proxy 模块并制作了这个 .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ http://domain.com/app/$1 [P,NC,QSA]

当我访问“ https://test.domain.com ”时,它会将其重定向到“ https://domain.com/app/index.php ”。我知道为什么会发生这种情况,因为当 htaccess 重定向发生在“ http://domain.com/app/index.php ”时,我的虚拟主机配置看到一个非 SSL 请求,并将请求重定向到与 SSL 相同的地址。所以我把 .htaccess 改成了这个

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ https://domain.com/app/$1 [P,NC,QSA]

我在重写规则中加入了“https”。当我再次访问“ https://test.domain.com ”时,它给了我这个错误。

Internal Server Error

The server encountered an internal error or misconfiguration and was     
unable to complete your request.

Please contact the server administrator at webmaster@localhost to 
inform them of the time this error occurred, and the actions you 
performed just before this error.

More information about this error may be available in the server error 
log.

Apache/2.4.7 (Ubuntu) Server at kjdcndkj.domain.com Port 443

最后我想要的是

1) redirect any Non-SSL trafic to SSL
2) any *.domain.com to /app folder

有人可以帮我吗

谢谢你。

4

1 回答 1

0

尝试这个:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.domain\.com [NC] 
RewriteRule ^(.*)$ %1/$1 [L]
于 2015-08-04T08:09:33.293 回答