我在测试VPS上运行了几十个站点,并且目前使用mod_vhost_alias来避免每次我抛出新站点时都需要新的VirtualHost。我目前的配置如下:
<VirtualHost *:80>
ServerName my.servername.com
ServerAlias *
VirtualDocumentRoot /var/www/%0/public_html
</VirtualHost>
在我的/ var / www目录中,每个站点都有自己的目录。例如,我个人页面的路径是/var/www/personalsite.com/public_html/index.php。这对于http://personalsite.com的请求非常有用。
但是,当请求进入http:// www .personalsite.com时,这不起作用。对于我的一些其他网站,我有相反的问题 - 目录可能是/var/www/www.sitename.com/public_html,因此http://www.sitename.com的请求没问题。但是,http://sitename.com的请求不起作用。
有没有办法设置我的Apache配置,以便在请求进入时,它会执行以下操作?这样做是否有任何性能影响?
在伪代码中:
1. Check if the directory or file exists. If it does, skip the rest of the rules
(but don't stop, in case a local .htaccess has rules in it for pretty URLs
in WordPress or Concrete5)
2. If the file/directory does not exist:
1. If the host header starts with "www":
1. remove the www from the host header and try the first rule again.
2. If the host header does not start with "www":
1. add "www" to the beginning of the host header and try the first rule again
3. If it still fails after trying both conditions:
1. Go to a 404 error page
我目前正在使用大约20个虚拟主机进行此操作,但是当我必须为每个站点添加新虚拟主机时,这似乎很荒谬。使用mod_vhost_alias的目的是为了避免首先需要所有这些VirtualHost。
答案 0 :(得分:0)
假设您可以重定向用户,可以使用https://stackoverflow.com/a/2361508/881615中的一种技术:
mod_rewrite
规则以删除领先的www。来自请求,