我有一个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即可。
所以我现在需要做的是我有一个文件夹&#34; / app&#34;在我的网站根目录中。我希望所有子域都指向该特定文件夹,并在地址栏上显示相同的URL。
我在php中启用了http_proxy模块并制作了这个.htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ http://domain.com/app/$1 [P,NC,QSA]
当我访问&#34; https://test.domain.com&#34;这会将其重定向到&#34; https://domain.com/app/index.php&#34;。我知道为什么会发生这种情况,因为当htaccess重定向发生在&#34; http://domain.com/app/index.php&#34;我的virtualhost配置看到非SSL请求,并使用SSL将请求重定向到相同的地址。所以我把.htaccess改成了这个
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ https://domain.com/app/$1 [P,NC,QSA]
我把&#34; https&#34;在重写规则中。我再次访问&#34; https://test.domain.com&#34;它给了我这个错误。
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
有人能帮助我吗
谢谢。
答案 0 :(得分: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]