Apache-2.2

存在其他“子域”時重寫 subdomain.domain.com

  • February 12, 2012

我的 httpd.conf 看起來像這樣:

NameVirtualHost 12.34.56.78:80

<VirtualHost 12.34.56.78:80>
DocumentRoot /var/www/html/site
ServerName www.example.com

<IfModule mod_rewrite.c>
   RewriteEngine On
   ...
</IfModule>
</VirtualHost>

<VirtualHost 12.34.56.78:80>
ServerName blog.example.com
DocumentRoot /var/www/html/blog
</VirtualHost>

Listen *:2194

<VirtualHost *:2194>
  Redirect / http://mgr.example.com/
</VirtualHost>

我希望能夠啟用“類別”作為子域,即如果使用者訪問:

science.example.com

它應該向他顯示該 URL 本身,但向他顯示 www.example.com/science.php 的內容

它不必是基於通用/萬用字元的方法 - 這些類別將是我可以單獨指定的一小部分。我只是不希望我添加的任何內容干擾網站的現有功能。

我怎樣才能做到這一點?

添加:

ServerAlias *.example.com

到虛擬主機並使用這些重寫規則:

Options +FollowSymLinks 
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [NC]
RewriteRule (.*) http://www.example.com/%1 [R=301,L]

如果您已經有一個子域,例如。subsub.example.com, 為另一個虛擬主機顯式設置為 ServerName/ServerAlias,它將優先於 wildxard 虛擬主機

引用自:https://serverfault.com/questions/344673