我不想让人们能够在我的网站中注册他们自己的部分,并让这些部分成为我的网站的子域。所以有人可以注册'测试',并有'test.example.com'参考他们的网站,这将是说/ site.php?id = 1那么我怎么会去写一个mod_rewrite规则呢?对子域名使用mod_rewrite
2
A
回答
2
mod_rewrite
可能不是最好的工具。 RewriteRules非常适合将文件映射到其他内容,但它并非真正意义上的域匹配。
您可以使用mod_rewrite
做的最好的是:
RewriteEngine On
# Skip www.domain.com
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^/(.*)$ site.php?domain=%1&file=$1 [L]
这是不是真的有用。我会建议做的,而是如果以编程方式检查这样的HTTP_HOST
值:
function get_subdomain() {
if(preg_match('/^([^.]+)\.domain\.com/i', $_SERVER['HTTP_HOST'], $matches))
return $matches[1];
}
0
您可以配置Apache要求在Apache配置中的“特殊”的领域(如www.mydomain.com等),在您的虚拟主机容器中,并让其他人默认访问您的第一个虚拟主机。然后,您可以将基础URL重写为调度应用程序,该应用程序将检查URL并将用户发送到正确的区域。
从Apache 2.0的文档:
几乎所有的Apache命令都可以 进入虚拟主机容器。 第一个VirtualHost部分用于 没有已知服务器名称的请求。
把代码来处理* .mydomain.com来在第一虚拟主机:
<VirtualHost *:80>
Servername custom.mydomain.com
DocumentRoot /var/www/html/custom
RewriteEngine on
RewriteRule ^/$ /var/www/cgi-bin/dispatch.cgi [R]
# more configs here
</VirtualHost>
<VirtualHost *:80>
Servername www.mydomain.com
DocumentRoot /var/www/html/homepage
# more configs here
</VirtualHost>
在dispatch.cgi,检查URL呼叫,以确定用户应该去。确保你设置你的DNS接受所有子域名。
希望有帮助!
0
实际上,我们一直在使用这种技术,在过去的一年中没有太多问题。我们mod_rewrite的配置是这样的:
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} !www.mydomain.com
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com
RewriteCond %{REQUEST_URI} !admin
RewriteRule (.*) /admin/ [R=301,L]
RewriteRule ^admin(.*)$ hosted/admin/$1 [QSA,L]
会发生什么事,就是将用户定向到theiraccount.mydomain.com/admin。
然后我们使用PHP来识别域名的帐户部分。使用诸如$ _SERVER ['SERVER_NAME']之类的东西或者一些获取域名和分析它的方法非常有效。
尽管将这些配置保存在httpd.conf中,但如果保存为.htaccess,这将成为高流量站点中的cpu问题。
相关问题
- 1. mod_rewrite和子域名
- 2. 虚拟域名和子域名使用mod_rewrite
- 3. mod_rewrite通配符子域名
- 4. Apache mod_rewrite域名
- 5. mod_rewrite名字域
- 6. .htaccess MOD_REWRITE子域
- 7. htaccess mod_rewrite子域
- 8. htaccess子域不能使用mod_rewrite启用
- 9. 如何使用mod_rewrite将子域重写为包含子域名的路径?
- 10. mod_rewrite直接访问子域名
- 11. mod_rewrite保留URL中的子域名
- 12. mod_rewrite的与子域名和URL模式
- 13. mod_rewrite如何添加子域名?
- 14. mod_rewrite:不要重写任何子域名
- 15. 使用mod_rewrite删除国家域名
- 16. Apache mod_rewrite域到子域?
- 17. Apache MOD_REWRITE域名Cookie
- 18. 使用Apache 2.2 mod_rewrite来合并子域
- 19. Apache的mod_rewrite子域
- 20. 根据子域名使用mod_rewrite附加参数
- 21. mod_rewrite;子域&子目录
- 22. htaccess mod_rewrite子目录子域
- 23. mod_rewrite多域名重写域名
- 24. miltiple域名/子域名使用htaccess
- 25. mod_rewrite的域名目录
- 26. Apache mod_rewrite到域名/ IP
- 27. mod_rewrite不能与子域
- 28. mod_rewrite a .html到子域
- 29. mod_rewrite:子域到控制器
- 30. mod_rewrite的子域目录