
我正在尝试向我的网络服务器添加通配符子域名系统,但它仍然不起作用,
以下是我采取的步骤:
vhost.conf
我在目录 中 创建了一个新文件var/www/vhosts/www.example.com/conf/vhost.conf
。
我把:
ServerAlias *.domain.com
其次,我在 Plesk 上创建了一个新的 DNS 通配符:
CNAME *domain.com example.com
然后我编辑了我的.htaccess
文件:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(^.*)\.example.com
RewriteRule (.*) user.php?user=%1
通常我的 URL 是:
http://www.example.com/user.php?user=solomon
但现在,我想要的是这样的:
http://solomon.example.com
但我采取的步骤仍然不起作用。
:)) 这里发生了什么事?
答案1
通配符域的正确 CNAME 定义应如下:
*.example.com CNAME example.com.
因此在 plesk 中您可以尝试编辑记录并在通配符后添加该点。
当然,您必须等待一段时间才能完成 DNS 传播,请不要忘记这一点。
您的 htaccess 看起来也有点错误,尽管它应该可以工作,但两次引用字符串的开头有点奇怪,请尝试这个:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$
RewriteRule .* user.php?user=%1 [L]
有关 1and1/Plesk 的更多具体信息,请阅读以下教程:http://www.1and1faq.com/forums/archive/index.php/t-602.html
答案2
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteRule ^(.*)$ http://solomon.example.com [R=permanent,L]
请参考此链接
答案3
但我采取的措施仍然没有效果
这没什么帮助——什么没有用?
名称解析了吗?Web 服务器是否响应对域的本地请求?(注意:服务器硬件上的本地接口可能未配置为与公共 IP 相同的地址。)您需要使用 Telnet 之类的工具连接到 IP,然后才能从新主机手动提交 HTTP 请求。Web 服务器是否未按预期区分域?重写规则是否未触发?您提到 Plesk — 暗示这是一项托管服务。您确定mod_rewrite
可用吗?您是否已通过相同机制在同一台服务器上设置了命名虚拟主机?您怎么知道只需添加一个新文件var/www/vhosts/www.kornar.com/conf/vhost.conf
就足够了?通常我希望重新启动 Web 服务器以激活更改。
答案4
Apache 已经为大规模虚拟主机;我建议您看一下如何进行设置。