为什么我们的动态子域在访问时会返回 403 forbidden 错误?

Why are our dynamic subdomains returning a 403 forbidden error when accessed?

我们正在尝试使子域附加到具有相同名称的对应目录,因此我们使用 .htaccess

完成了此操作
php_value session.cookie_domain .domain.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^/.]+)\.domain\.com$ 
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule (.+)$ "http://domain.com/%0" [L,P]


DirectoryIndex index.php

要尝试访问子域,请将用户定向到目录。但我们的问题是每次我们尝试访问任何子域时,我们都会收到 403。我们在 Debian 上使用 Apache。 DNS 中的通配符有效,但不知道如何在虚拟主机中指定它。

您可以将此代码放入您的 htaccess(必须位于文档根文件夹中)

php_value session.cookie_domain .domain.com
DirectoryIndex index.php

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.+?)\.domain\.com$ [NC]
RewriteCond %1 !^(?:www|ftp|mail)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /%1/ [L]

此代码将在内部将每个子域(wwwftpmail 除外)重写到其子文件夹中。

示例:http://user.domain.com/something 将在内部重写为 /user/something

注意:确保通配符指向与主域相同的文档根目录