Настройте codeigniter для запуска только под моим доменом

У меня есть определенный IP-адрес на сервере Linux и домен, указывающий на IP.
Я установил приложение codeigniter и через некоторое время понял, что есть хотя бы пара доменов (не моих), также указывающих на мой IP-адрес.
Мне нужно остановить кодировщик, обслуживающий страницы, когда домен не принадлежит мне.
Есть ли чистое решение для этого? Может быть, что-то с URL-библиотекой? Интересно, есть ли лучшая практика в этом случае? Но, возможно, лучшая практика потребует остановки другого домена в каком-то другом месте? Что-то вроде конфига apache или htaccess?

0

Решение

Хорошей практикой для этого является использование виртуальных хостов. Вам лучше прочитать руководство по этому вопросу, прежде чем делать что-либо, я скажу, если вы никогда раньше не работали с Apache Vhosts.

Кстати, что вы должны сделать, чтобы правильно различать домены, указывающие на ваш сервер, это следующее:

Допустим, ваш домен www.mydomain.com, а ваш сайт находится в / var / www / vhosts / myproject /

Сначала перейдите в файл apache2.conf и добавьте строку:

Include sites-enabled/

Вам следует включить виртуальные хосты в вашей конфигурации apache, а затем создать файл конфигурации www.mydomain.com в / etc / apache2 / sites-available. Это должно быть что-то вроде этого:

# 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

Который создаст символическую ссылку на сайтах, включенных в этот файл конфигурации.

и затем перезапустите сервис.

Подсказка: я не знаю о специфическом поведении codeigniter. При объявлении DocumentRoot в файле www.mydomain.com вы должны указать каталог с файлом index.php вашего проекта. I: E. в FuelPHP это каталог public /, поэтому, если вы работали с Fuel, вам следует написать:

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

Поэтому убедитесь, что вы указываете на фронтальный контроллер codeigniter.

Повторите это для каждого другого домена, указывающего на ваш сервер, с конкретными файлами конфигурации на сайтах, доступных.

Надеюсь это поможет!

1

Другие решения

Указание нескольких доменов на одном IP — обычная ситуация. Вам просто нужно убедиться, что ваша конфигурация apache имеет VirtualHost, настроенный для управления вашим доменом, и никто другой.

Если вы беспокоитесь, что кто-то на вашем хосте настраивает свою конфигурацию apache так, чтобы она указывала на ваш каталог CI, вы можете попробовать сделать что-то подобное в вашем файле index.php:

<?php

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

Как в стороне (Правка):

Браузеры отправляют заголовок «Host:», когда они делают свой запрос. Это означает, что он перейдет на IP-адрес, но сервер там читает заголовок «Host» и отправляет его на правильный виртуальный хост (в apache это будет основано на ServerName). Так что, возможно, кто-то, кто разделяет хост с вами, может настроить свою конфигурацию apache так, чтобы она указала на вашу установку CI, но это, вероятно, единственный сценарий, где это будет проблемой. Перейдите на свой собственный хост, которым вы ни с кем не делитесь, и этот сценарий также удален.

1

По вопросам рекламы [email protected]