导航:首页 > IDC知识 > thinkphp二级域名

thinkphp二级域名

发布时间:2020-10-26 06:38:00

1、THINKPHP的U函数不支持二级域名

/**
  * URL组装 支持不同URL模式
  * @param string $url URL表达式,格式:'[分组/模块/操作#锚点@域名]?参数1=值1&参数2=值2...'
  * @param string|array $vars 传入的参数,支持数组和字符串
  * @param string $suffix 伪静态后缀,默认为true表示获取配置值
  * @param boolean $redirect 是否跳转,如果设置为true则表示跳转到该URL地址
  * @param boolean $domain 是否显示域名
  * return string
  */

在U函数里有注解有,第五个参数:$domain设置为true。

在官网上也有一些大神,自己修改,你可以在官网搜索:关于开启子域名后,U函数生成的问题

2、thinkphp如何绑定二级域名

先在根目录创建一个手机目录,名称随意,再创建一个手机模块

手机目录版里面有个权新的index.php入口文件,内容如下

定义一个define绑定到手机模块中,这样就行了,至于页面跳转用js跳转到:域名/mobile,或者直接绑定二级域名到根目录下的mobile文件夹即可

3、thinkphp如何获取二级域名前缀然后跳转到其他的后缀

这个与框架无关,这只要获取到访问域名就可以判断了

php中$_SERVER['SERVER_NAME']就可以访问当前域名;

确定域名后用explode分离域名为数组获取域名前缀就是为0的数组

4、thinkphp3.1 二级域名部署和各个二级域名的URL路由设置 ,配置文件怎么写?????

http://doc.thinkphp.cn/manual/sub_domain_deploy.html
ThinkPHP支持分组的二级域名部署,该功能可以使项目中的多个分组呈现为二级域名的形式,例如经过配置二级域名部署,可以把:
http://domain.com/index.php/Admin/或者http://domain.com/Admin/
变为 http://admin.domain.com/ 访问方式。
先配置域名, 以 apache为例 , 配置如下:
#主域名
DocumentRoot D:\htdocs\www
ServerName domain.com
#子域名
DocumentRoot D:\htdocs\www
ServerName admin.domain.com
ServerAlias *.domain.com
然后配置host, 以windows为例编辑C:\WINDOWS\system32\drivers\etc\hosts 文件,增加下面两行:
127.0.0.1 domain.com
127.0.0.1 admin.domain.com
接下来修改程序的配置文件config.php如下
'APP_GROUP_LIST' => 'Home,Test,Admin',
'DEFAULT_GROUP' =>'Home',
'APP_SUB_DOMAIN_DEPLOY'=>1, // 开启子域名配置
/*子域名配置
*格式如: '子域名'=>array('分组名/[模块名]','var1=a&var2=b');
*/
'APP_SUB_DOMAIN_RULES'=>array(
'admin'=>array('Admin/'), // admin域名指向Admin分组
'test'=>array('Test/'), // test域名指向Test分组
),

3

5、Thinkphp 框架 部署二级域名怎么样绑定到一个具体的方法上?

你配置那个干毛线。。直接绑定二级域名到你的访问目录即可。。。

6、请问如果一个网站要用二级域名做3个分站的形式,是需要做三个网站吗?

按常理来说,是应该这样的,但是,域名绑定是支持,文件夹绑定的,也就是每个二级域名可以指向文件夹,只是你这个文件夹内访问页为你设置的的WEB首页就能正常访问到!所以我认为是筛选,就像thinkphp是可以直接用二级域名绑定分组一样,如果所用框架不允许,也可以用URL伪类来重定向,应该能完成类似与58同城一样的功能!

7、thinkphp 二级域名访问无效 求助

ThinkPHP支持分组的二级域名部署,该功能可以使项目中的多个分组呈现为二级域名的形式,例如经过配置二级域名部署,可以把:
http://domain.com/index.php/Admin/或者http://domain.com/Admin/
变为 http://admin.domain.com/ 访问方式。
先配置域名, 以 apache为例 , 配置如下:
#主域名
DocumentRoot D:\htdocs\www
ServerName domain.com
#子域名
DocumentRoot D:\htdocs\www
ServerName admin.domain.com
ServerAlias *.domain.com
然后配置host, 以windows为例编辑C:\WINDOWS\system32\drivers\etc\hosts 文件,增加下面两行:
127.0.0.1 domain.com
127.0.0.1 admin.domain.com
接下来修改程序的配置文件config.php如下
'APP_GROUP_LIST' => 'Home,Test,Admin',
'DEFAULT_GROUP' =>'Home',
'APP_SUB_DOMAIN_DEPLOY'=>1, // 开启子域名配置
/*子域名配置
*格式如: '子域名'=>array('分组名/[模块名]','var1=a&var2=b');
*/
'APP_SUB_DOMAIN_RULES'=>array(
'admin'=>array('Admin/'), // admin域名指向Admin分组
'test'=>array('Test/'), // test域名指向Test分组
),

8、500分悬赏 thinkphp二级分类 包括数据库设计及代码

在官方手册去查了下,没有具体说明怎么支持二级域名的方法,最后找到一个解决方案(修改thinkphp的parsePathInfo函数让其支持二级域名)。
# 修改的路径是: # ThinkPHP\Lib\Think\Util\Dispatcher.class.php private static function parsePathInfo() { $pathInfo = array(); if(C('URL_PATHINFO_MODEL')==2){ $paths = explode(C('URL_PATHINFO_DEPR'),trim($_SERVER['PATH_INFO'],'/')); $APP_LEVEL_DOMAINS = false; $domain = array_shift(explode('.',$_SERVER['HTTP_HOST'])); if(in_array($domain, C('APP_LEVEL_DOMAINS'), true)){ $APP_LEVEL_DOMAINS = true; } if(C('APP_LEVEL_DOMAIN_DEPLOY_ON') && $APP_LEVEL_DOMAINS) { if(isset($paths[0]) && strtolower($paths[0]) == strtolower($domain)){ array_shift ($paths); } $pathInfo[C('VAR_MODULE')] = ucfirst(array_shift(explode('.',$_SERVER['HTTP_HOST']))); $pathInfo[C('VAR_ACTION')] = array_shift($paths); } else { $groupApp = C('APP_GROUP_LIST'); if ($groupApp) { $arr = array_map('strtolower',explode(',',$groupApp)); $pathInfo[C('VAR_GROUP')] = in_array(strtolower($paths[0]),$arr) ? array_shift($paths) : ''; } $pathInfo[C('VAR_MODULE')] = array_shift($paths); $pathInfo[C('VAR_ACTION')] = array_shift($paths); } for($i = 0, $cnt = count($paths); $i < $cnt; $i++){ if(isset($paths[$i+1])) { $pathInfo[$paths[$i]] = (string)$paths[++$i]; }elseif($i==0) { $pathInfo[$pathInfo[C('VAR_ACTION')]] = (string)$paths[$i]; } } }else { $res = preg_replace('@(\w+)'.C('URL_PATHINFO_DEPR').'([^,\/]+)@e', '$pathInfo[\'\\1\']="\\2";', $_SERVER['PATH_INFO']); } return $pathInfo; } 用上面这个函数替换后就能支持二级域名了,不过还有事情要做。在项目的配置文件(config.php)里面加上二级域名支持。
return array( #'配置项'=>'配置值' 'DEBUG_MODE' => true, 'URL_MODEL' => 2, 'APP_LEVEL_DOMAIN_DEPLOY_ON' => true, #标识打开二级域名支持 'APP_LEVEL_DOMAINS' => array('sites','seo'), #例:如果是sites.ys250.com 那么将采用2级别域名的方式 #'URL_HTML_SUFFIX'=>'.html', #'URL_ROUTER_ON' => true
结果如:
http://www.ys250.com/sites/ip (old)
http://sites.ys250.com/ip (new)
http://www.ys250.com/seo (old)
http://seo.ys250.com (new)
http://ips.ys250.com/ 让采用老的方式,因为ips没有开通二级支持支持,因此大家要开通自己的二级域名请设置APP_LEVEL_DOMAINS这个数组。

9、thinkphp 如何子域名session跨域

给你一个方案
在A站登陆成功后,在提示页面输出一个<script src="B站的同步登陆api"></script>

其中 B站的同步登陆api 地址带上用户的ID及登陆授权参数. 然后这个API中通过用户的ID及授权参数判断是否合法.合法则在B站添加session 这样就实现了同步登陆.

然后同步退出,方法也是一样的

10、thinkphp3.1.3 开启子域名部署后,如何对每个分组进行独立路由?

如果只启用m子域名,admin/xxx/xxx是可以正常用的。
如果有些地址不能访问,添加路由规则即可
'URL_ROUTER_ON' => true,
'URL_ROUTE_RULES' => array();

与thinkphp二级域名相关的知识