簡體   English   中英

無法使用httpd-vhosts.conf從子域重定向到子子域

[英]Cannot redirect to sub-subdomain from subdomain using httpd-vhosts.conf

我正在嘗試設置本地開發服務器,在這里我可以直接訪問目錄E:\\development\\projects\\任何項目,並讓apache自動將我重定向到正確的子域。

但是,當嘗試重定向到子子域( backend.project01.dev01 )時,我只是收到“服務器無法訪問”消息。

有關更多信息,請參見我的httpd-vhosts.conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev01
    ServerAlias www.dev01
    DocumentRoot "E:\development\projects"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects">
    </directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName dev01
    ServerAlias *.dev01
    VirtualDocumentRoot "E:\development\projects\%1"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%1">
    </directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName dev01
    ServerAlias *.*.dev01
    VirtualDocumentRoot "E:\development\projects\%2"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%2">
    </directory>
</VirtualHost>

簡而言之:

這項工作: project01.dev01/

這不起作用: backend.project01.dev01/

所以我找到了解決方案。 要匹配子子網域,您必須首先匹配deepest級別。

即:在sub.domain之前匹配deepest.sub.domain

在此示例中的答案是:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev01
    DocumentRoot "E:\development\projects"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects">
    </directory>
</VirtualHost>

## moved this up
<VirtualHost *:80>
    ServerName dev01
    ServerAlias *.*.dev01
    VirtualDocumentRoot "E:\development\projects\%2"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%2">
    </directory>
</VirtualHost>

## moved this down
<VirtualHost *:80> 
    ServerName dev01
    ServerAlias *.dev01
    VirtualDocumentRoot "E:\development\projects\%1"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%1">
    </directory>
</VirtualHost>

在此示例中,apache將始終首先嘗試匹配*.*.dev01 ,如果失敗,則嘗試匹配*.dev01

希望這會在將來對其他人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM