子域重定向不起作用


0

因此,我想为每个客户端创建一个子域,例如:

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
在普通的共享主机上,您做得不好(或根本做不到)。您将需要一台真正的服务器(例如VPS),并且没有任何cPanel或Plesk废话。
迈克尔·汉普顿

Answers:


0

您可以访问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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.