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

时间:2015-01-03 03:04:55

标签: apache .htaccess http-status-code-403

我们正在尝试将子域名附加到具有相同名称的目录对应项,因此我们使用.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工作中的通配符,但不知道如何在虚拟主机中指定它。

1 个答案:

答案 0 :(得分:0)

您可以将此代码放入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/$1 [L]

此代码将在内部将每个子域(wwwftpmail除外)重写为其子文件夹等效项。

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

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