小编Oli*_*Ash的帖子

具有多个域的一台 Apache 服务器上的 SSL 和 ServerAlias

我有一个虚拟服务器,我想将它指向两个域,都指向不同的站点。

例如,example1.com转到/var/www/example1example2.com/var/www/example2.

我可以用 VirtualHosts 做到这一点:

<VirtualHost *:80>
    ServerName example1.com
    DocumentRoot "/var/www/example1"
</VirtualHost>

<VirtualHost *:80>
    ServerName example2.com
    DocumentRoot "/var/www/example2"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是与领先的www. 为了启用对 的支持www,我刚刚添加了一个ServerAlias

<VirtualHost *:80>
    ServerName example1.com
    ServerAlias www.example1.com
    DocumentRoot "/var/www/example1"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?

我的第二个问题涉及 SSL。我也想example2.com通过 SSL 访问:https://example2.com. 我已经颁发了证书等,但我如何在我的httpd.conf文件中实现这一点?目前我有一个临时的解决方法。我刚刚将服务器的 main 更改DocumentRoot为指向 this /var/www/example2。我知道 SSL 位于不同的端口上,因此 VirtualHost 定义不会对其进行解释,因此我已将其作为快速解决方法。但是,我想知道这样做的最佳方法是什么?

ssl virtualhost

6
推荐指数
1
解决办法
3万
查看次数

Apache 重定向域和所有子域

我有一个 Apache 配置设置,其中多个虚拟主机作为子域。我刚刚购买了一个新域名,我希望对这个域名的所有请求都重定向到新域名,包括子域:

old.com > new.com
sub.old.com > sub.new.com
Run Code Online (Sandbox Code Playgroud)

有没有什么简单的方法可以在里面做到这一点httpd.conf

domain subdomain virtualhost apache-2.2

4
推荐指数
1
解决办法
1902
查看次数

带有别名的 Apache 虚拟主机

我有一个虚拟主机在我的本地 Apache 副本上运行。它有一个别名。

<VirtualHost 127.0.0.1>
        ServerName oliverash.me.dev
        DocumentRoot "/usr/docs/oliverash.me/public"
        Alias /mayor "/usr/docs/uni/tmosct/public"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这工作正常。我可以通过oliverash.me.dev/mayor在浏览器中访问来访问别名。但是,我.htaccess rewrite在那个别名的文件夹中有一个简单的,它将所有内容(文件夹除外)重写到 index.php 页面。此重写工作正常。

尽管重写正在工作,但重写返回 404 Not Found 错误。例如,如果我转到oliverash.me.dev/mayor/abcdefg,它会重写index.php文件,但我收到此错误:

“在此服务器上找不到请求的 URL /usr/docs/uni/tmosct/public/index.php。”

这个文件确实存在。我可以直接访问它。

当我使用相同的别名但localhost不仅仅是这个虚拟主机时,重写工作正常,index.php 返回实际文件,而不是 404。这让我觉得这与我的权限有关虚拟主机。所以我试图在我的下面添加这个httpd-vhosts.conf(没有运气):

<Directory "/usr/docs/oliverash.me/public">
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

这些是在localhost's上使用的相同设置DocumentRoot,所以我不明白为什么它没有帮助。

更新:

所以我检查了Apache error_log。事实证明,这个别名的重写实际上是相对于这个虚拟主机的文档根目录的。

[Fri Jan 06 22:30:57 2012] [error] [client 127.0.0.1] File does not exist: /usr/docs/oliverash.me.dev/usr

这个重写实际上是在/usr/docs/oliverash.me.dev/public/usr/docs/uni/tmosct/public寻找 index.php。希望很明显,它应该在寻找/usr/docs/oliverash.me.dev

更新 2: …

mod-rewrite alias .htaccess virtualhost apache-2.2

2
推荐指数
1
解决办法
2万
查看次数

Apache 上的自动通配符子域

目前,我为各个子域设置了多个虚拟主机。如果我可以告诉 Apache 使用通配符自动查找文件夹,那就容易多了。例如,hello.domain.com将使用/var/www/hello目录作为其DocumentRoot.

但是,我希望能够定义异常,例如如果我想helloworld.domain.com改为指向/var/www/helloworld/public

我环顾四周,但所有示例似乎都在做不同的事情。

subdomain wildcard-subdomain apache-2.2

2
推荐指数
1
解决办法
3212
查看次数