因此,我想为每个客户端创建一个子域,例如:
user1.mydomain.com -> mydomain.com/users/user1
或者至少
user1.mydomain.com -> mydomain.com
我可以user1
用 php 抓取该部分。不是重定向,而是 URL 重写。
我的问题是,这根本不起作用。这是我在文件中的当前配置.htaccess
:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.mydomain\.com [NC]
RewriteCond %{QUERY_STRING} !^/users/
RewriteRule ^(.*)$ /index.php?/users/%2/$1
# CodeIgniter Rules
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
我已经看到了很多关于这个问题的答案,但对我来说似乎没有什么用。我还更新了我的域区域文件:
*.mydomain.com. A 000.000.000.000
当我输入类似内容时,我看到的user2.mydomain.com
是我的托管账户的错误页面,而不是服务器错误。像往常一样,任何帮助都会非常感激,我已经尝试找出问题所在好几天了 :P
编辑:问题似乎更多地出在服务器配置(Apache)上。如果我输入任何子域名,它显示的是来自我的托管服务提供商服务器的页面,而不是服务器错误(如 500 等),只是一个页面。如果我在 URL 栏中输入我的网站 IP,显示的页面相同,它会转到我的托管服务提供商的默认页面。
感谢大家阅读。
答案1
您有权访问 Apache 服务器配置吗?
您<VirtualHost>
需要ServerAlias
覆盖您的子域名,否则这将不起作用。
如果您愿意,您可以只提供子域中的内容而不进行重定向:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /path/to/docroot
# existing config
</VirtualHost>
<VirtualHost *:80>
ServerName subdomains.example.com
VirtualDocumentRoot /path/to/docroot/users/%1
</VirtualHost>