CodeIgniter中外链跳转异常:本地正常线上跳转至mysite.com/www.google.com
问题原因与解决方案
哦,这个坑我之前踩过!问题出在你的Login链接是相对路径,而非完整的绝对路径。
为什么会跳转到mysite.com/www.google.com?
当你写href="www.google.com"时,浏览器会默认把它当成当前网站域名下的子路径,自动拼接成「当前域名 + 你写的路径」——也就是你的线上域名mysite.com加上www.google.com,最终变成mysite.com/www.google.com。不管用不用CodeIgniter,浏览器处理相对/绝对路径的逻辑都是一致的。
怎么解决?
把外部链接改成带协议的完整绝对路径,也就是加上https://(推荐用HTTPS,更安全):
<ul> <li> <a href="https://www.google.com" class="drop-text">Login</a> </li> <li> <a href="#contact" class="drop-text">Contact Us</a> </li> </ul>
补充:为什么本地看似正常?
大概率是你本地测试时直接打开了HTML文件(用file://协议),浏览器对这种本地文件的相对路径处理逻辑和服务器环境(http/https)不一样,所以没触发这个问题,但上线到服务器后就暴露了。
另外如果是站内链接,CodeIgniter提供了site_url()或base_url()函数来生成正确的站内绝对路径,但外部链接必须手动加上完整的协议和域名哦~
内容的提问来源于stack exchange,提问作者Suluh Damar Grahita
相关产品推荐
相关产品推荐

