gpt4 book ai didi

apache - VirtualDocumentRoot 处理不存在的文件夹

转载 作者:行者123 更新时间:2023-12-04 00:30:51 28 4
gpt4 key购买 nike

使用 Apache,我已经设置了 VirtualDocumentRoot,它的工作方式如下:

<VirtualHost *:80>
UseCanonicalName Off
ServerName app.example.com
ServerAlias *.example.com
VirtualDocumentRoot "/home/domains/example.com/%1"
<Directory "/home/domains/example.com/*">
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>

如果我把 http://mail.example.com 的 URL , DocRoot 变成 /home/domains/example.com/mail ,如果是 http://www.example.com , DocRoot 变成 /home/domains/example.com/www , 等等。

现在我想检查文件夹是否存在,比如当用户请求像 http://myusername.example.com 这样的域时。 , DocRoot 检查 /home/domains/example.com/myusername并且不存在,所以应该引用 /home/domains/example.com/404 .这可能吗?

我已经提到了以下问题,但不好:
  • VirtualDocumentRoot Domains and Subdomains
  • Apache VirtualDocumentRoot redirect non-existing domains
  • 最佳答案

    如果您有映射到文件夹的虚拟子域,那么您不能只检查文档根目录的存在吗?如果不存在,则重定向到 404 subdomain反过来应该使用 /home/domains/example.com/404也许像这样。

    <VirtualHost *:80>
    UseCanonicalName Off
    ServerName app.example.com
    ServerAlias *.example.com
    VirtualDocumentRoot "/home/domains/example.com/%1"
    <Directory "/home/domains/example.com/*">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order Allow,Deny
    Allow from all
    RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT} !-d
    RewriteRule ^(.*) http://404.example.com/ [R=301,L]
    </Directory>
    </VirtualHost>

    或者,如果 %{DOCUMENT_ROOT} 没有选择完整的 virtualdocumentroot 路径由于动态分配,变量,可以通过将子域分配给环境变量来尝试这种方式,然后使用它来检查路径。
      <VirtualHost *:80>
    UseCanonicalName Off
    ServerName app.example.com
    ServerAlias *.example.com
    VirtualDocumentRoot "/home/domains/example.com/%1"
    <Directory "/home/domains/example.com/*">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order Allow,Deny
    Allow from all
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.+)\.example\.com [NC]
    RewriteRule ^(.*)$ - [E=virt_path:%1,N,NS]

    RewriteCond %{DOCUMENT_ROOT}/%{ENV:virt_path} !-d
    RewriteRule ^(.*) http://404.example.com/ [R=301,L]
    </Directory>
    </VirtualHost>

    关于apache - VirtualDocumentRoot 处理不存在的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28627286/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com