【问题标题】:Why are our dynamic subdomains returning a 403 forbidden error when accessed?为什么我们的动态子域在访问时会返回 403 禁止错误?
【发布时间】:2015-01-03 03:04:55
【问题描述】:

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

【问题讨论】:

  • 我不确定我明白了。例如,您有 http://user.domain.com 并且您希望它在内部重写为 http://domain.com/user/ ?无论如何,首先确保您的主域和通配符指向同一个文档根。然后,我看到您正在使用 P 标志(在您的情况下这不是强制性的)。你的代码中有几个语法错误,当我确定我理解你的问题时,我会发布一个正确的答案
  • 那种。我想在浏览器中访问 user.domain.com,但不知何故会显示同名的子目录 (domain.com/user)
  • 是的,我就是这么说的
  • 是的,我修改了我的回复

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


【解决方案1】:

您可以将此代码放在您的 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]

此代码将在内部将每个子域(www、ftp 和 mail 除外)重写为其等效子文件夹。

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

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

【讨论】:

  • 嗯,这是不可能的,因为我没有在任何地方定义这种行为。您是否仅通过编辑 domain 来尝试我的代码?您的 htaccess 中还有其他规则吗?您的user 子文件夹是否存在?
  • 是的。不,我动态创建子目录。
  • 我不知道发生了什么:(
  • 我的代码中忘记了一些东西。你能试试我编辑的答案吗?
  • 您是否收到错误消息?你能看看你的 apache 日志(访问/错误)吗?或者如果你启用它重写日志
猜你喜欢
  • 2014-02-25
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2017-12-15
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
相关资源
最近更新 更多