我最近不得不从以下网站移动基于CodeIgniter的网站:
/var/www/vhosts/dev/
为:
/var/www/vhosts/dev/site1/
我遇到的问题是我需要仍然可以从域中访问Web根目录:www.devdomain.com
现在所有相关链接都已破坏,因为它们显然是指Web根目录。
是否有重写规则或我可以使用的顶级内容会自动将site1/
添加到所有基于相对的链接?
那么,通常会发生什么;
<a href="/enrollment">Enrollment</a>
https://www.devdomain.com/enrollment
现在需要成为;
<a href="/enrollment">Enrollment</a>
https://www.devdomain.com/site1/enrollment
非常感谢任何帮助。
答案 0 :(得分:0)
$ config ['base_url']修复Nikola提及如果您在链接中使用了
<a href="<?php echo base_url(); ?>/enrollment">Enrollment</a>
由于显然您不想通过代码,问题不在Codeigniter中,而是在服务器中(?)。也许.htaccess文件中的RewriteRule可以帮助你(如果你在Apache上)。
我不能评论其他答案,因为我的代表级别很低,否则我只会对Nikola的回答发表评论。
编辑:我刚认清了。你必须从href属性中删除初始的“/”!它是网络服务器的根源,它是一个相对链接,但不是你想象的方式。如果删除“/”,则链接将转到文件的同一目录级别的文件(在本例中为Codeigniter安装)。抱歉,您必须完成整个代码。此外,我建议您使用site_url()链接Codeigniter内的控制器,帮助处理这种情况和其他很多情况。
第二次编辑:这不是site_url()而是base_url(),对不起是混乱。刚刚更正了代码。
答案 1 :(得分:0)
请在此处查看我对base_url()
vs site_url()
主题的回答,以及为何使用其中一个。
How to set proper codeigniter base url?
为了生成到CodeIgniter生成的页面的链接,site_url()
实际上是正确的功能。此外,将url作为参数传递给函数作为字符串使得生成URL更清晰。观察:
<a href="<?php echo base_url(); ?>/enrollment">Enrollment</a>
VS
<a href="<?php echo site_url('enrollment'); ?>">Enrollment</a>
甚至:
<?php echo anchor('enrollment', 'Enrollment'); ?>