将codeigniter配置为仅在我的域下运行


Configure codeigniter to only run under my domain

我在linux服务器上有一个特定的ip地址和一个指向ip的域。我建立了一个代码点火器应用程序,过了一段时间,我意识到至少有几个域(不是我的)也指向我的ip地址。当域不是我自己的域时,我需要停止代码点火器为页面提供服务。有干净的解决方案吗?也许是url库的问题?我想知道在这种情况下是否有最佳做法。但也许最佳实践需要在其他时间点停止另一个域?在apache配置或htaccess中有什么相似之处?

实现这一点的好方法是使用虚拟主机。如果你以前从未使用过apachevhosts,你最好先读一本关于这方面的指南,然后再做我要说的任何事情。

顺便说一下,为了正确区分指向服务器的域,你应该做的是下一步:

假设您的域名是www.mydomain.com,您的网站位于/var/www/vhosts/myproject/

首先,转到apache2.conf文件并添加行:

Include sites-enabled/

您应该在apache配置上启用虚拟主机,然后在/etc/apache2/sites下创建www.mydomain.com配置文件。应该是这样的:

# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/vhosts/myproject
ServerName www.mydomain.com
</VirtualHost>

然后运行:

a2ensite www.mydomain.com

这将在启用该配置文件的站点中创建一个符号链接。

然后重新启动服务。

提示:我不知道代码点火器的具体行为。在www.mydomain.com文件中声明DocumentRoot时,必须指向包含项目的index.php文件的目录。I: E。在FuelPHP中是公共/目录,所以,如果你使用的是Fuel,你应该写:

DocumentRoot /var/www/vhosts/myproject/public/

因此,请特别检查您是否指向代码点火器前控制器。

对指向服务器的其他域重复此操作,并且站点下有特定的配置文件可用。

希望这能有所帮助!

将多个域指向一个IP是常见的情况。你只需要确保你的apache配置已经设置了VirtualHost来处理你的域,而不是其他人的域。

如果你担心你的主机上有人正在将他们的apache配置设置为指向你的CI目录,你可以尝试在你的index.php文件中这样做:

<?php
if ($_SERVER['HTTP_HOST'] != 'YOUR DOMAIN')
{
   // redirect, die, etc
}

旁白(编辑):

浏览器在提出请求时会发送一个"Host:"标头。这意味着它将转到一个IP地址,但那里的服务器读取"Host"标头并将其发送到正确的虚拟主机(在apache中,这将基于ServerName)。因此,与您共享主机的人可能会设置他们的apache配置来指向您的CI安装,但这可能是唯一会出现问题的情况。移动到你自己的主机,你不与任何人共享,这种情况也会被删除。