我有域名,请说 mydomain.com 。
我希望每个子域都加载具有相同名称的目录内容...例如,如果有人写了
http://sub.mydomain.com/index.php
我想向他展示
的内容http://sub.mydomain.com/sub/index.php
但是,我希望它在地址栏中显示http://sub.mydomain.com/index.php
apache vhost就像
<VirtualHost *:80>
ServerName *.mydomain.com
DocumentRoot /var/www/vhosts/mydomain.com/subdomains/subs/www
... more stuff ...
</VirtualHost>
所以在文件系统中,上面例子的文件将在
目录下/var/www/vhosts/mydomain.com/subdomains/subs/www/sub
我在这里尝试了许多提议的解决方案,但其中大多数是重定向到其他域/子域或最终在重定向循环中:(
TIA
答案 0 :(得分:2)
您需要添加一些重写规则来检查子域,然后重写到相关路径:
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias *.mydomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} (.*)\.mydomain\.com
RewriteRule ^/(.*)$ /%1/$1
DocumentRoot /var/www/vhosts/mydomain.com/subdomains/subs/www
... more stuff ...
</VirtualHost>
这将捕获“.mydomain.com”之前的任何内容,然后将其重写为URL为%1,$ 1将是所请求的资源,例如index.html
请注意,如果www.mydomain.com是您网站的有效域名,这可能会让您失望!
答案 1 :(得分:0)
在DOCUMENT_ROOT/.htaccess
文件中试用此代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^sub\.[^.]+\.[^.]+$ [NC]
RewriteRule !^sub(|/$) /sub%{REQUEST_URI} [L,NC]