PHP 如何实现绑定其他域名访问?

就像是 这个网站的功能一样

https://help.jinshuju.net/art...

通过用户自行解析并添加,就可以直接访问到相关域名.
不知道如何通过程序方面去实现,或者 nginx 如何配置规则?

无法实现每添加一个域名就添加一个 nginx 配置文件.


我的意思是如何实现多域名访问一个程序,并且浏览器地址还是当前绑定的域名的地址,不是访问程序后如何判断是什么域名的问题。

比如 abc.com 是一个网站程序,里面有一个页面 abc.com/page.html 我想通过绑定域名的方式 绑定 bcd.com 用户看到的效果是 bcd.com/page.html 同时 abc.com/page.html 也可以访问到.

阅读 5.3k
5 个回答

不考虑nginx,或者通过nginx绑定了很多域名到系统,系统根据不同域名显示不同内容。这个原理很简单,域名就是一个参数。比如,http://xx.com?id=1这里可以根据ID的值来获取到不同内容,这个应该都知道,那么我们吧这个参数换成域名不就行了。

$url=$_SERVER['HTTP_HOST'];

这个$url就是参数,根据这个参数来判断获取指定内容

server {
     listen       80;
     server_name  domain.com  www.domain.com;
     ...
}

这个可以实现多域名解析到一个程序,而且都可以访问。如果要显示不同内容就看开始写的那个

server {
     listen       80;
     server_name  domain.com  www.domain.com;
     ...
}

搜索泛解析。

这个有两种方式,都是在nginx上做

第一种是使用default_server

server {
    listen       80 default_server;
    ...
    

第二种方式是使用通配符

server {
    ...
    server_name  aicode.cc *.aicode.cc;

区别在于第一种方式下,所有为经过单独配置的域名访问都会由该server块来处理,而第二种方式则匹配*.aicode.cc规则的才会被其处理。

看了回答都是php和nginx的,我来说下前端的

window.location.host; //返回url 的主机部分,例如:www.xxx.com  
window.location.hostname; //返回www.xxx.com  
window.location.href; //返回整个url字符串(在浏览器中就是完整的地址栏),例如:www.xxx.com/index.php?class_id=3&id=2  
window.location.pathname; //返回/a/index.php或者/index.php  
window.location.protocol; //返回url 的协议部分,例如: http:,ftp:,maito:等等。  
window.location.port //url 的端口部分,如果采用默认的80端口,那么返回值并不是默认的80而是空字符  

如果不满足,在用正则去匹配地址,最后再跳转新的页面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题