RSS-подписка

RSS-лента

Новые статьи

Последние комментарии


Получать обновления на эл. почту

Ваш e-mail:

Рассылка новостей от Loco

Установка другого сайта (на CodeIgniter или Yii) в подпапку и чтобы поддомен ссылался на подпапку

Нет картинки Устанавливаем сайт внутри сайт (в подпапку основного домена) и делаем .htaccess перенаправление на поддомен из подпапки в основном сайте.

Этот вопрос возник, равно как и всё, о чём мы пишем на Loco, практической необходимостью. Решение работает на демонстрации работы нашей системы Team Sense - demo.teamsense.ru. Сама система функционирует на CodeIgniter, и существующие решения не совсем подходят в силу особенностей этого движка.

Расскажем как привязать поддомен к подпапке, в которую установлен сайт на CodeIgniter.

1. Сначала устанавливаем сайт в подпапку основного сайта, например, /demo. Проверяем, что он заработал по адресу http://домен.ru/demo.

2. Дальше в .htaccess основного домена надо по идее прописать (совет с http://forum.searchengines.ru/showthread.php?t=618353)

RewriteEngine on
RewriteBase /     

RewriteCond %{HTTP_HOST} ^domain.ru
RewriteRule demo/(.*)$ http://demo.domain.ru/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^demo.domain.ru$
RewriteCond %{REQUEST_URI} !^/demo  
RewriteRule ^(.*)$ /demo/$1 [L,QSA]

3. Терерь наш поддомен прикреплён к подпапке demo, и всё бы хорошо, но у CodeIgniter мы избавлялись от присутствия в url - index.php, поэтому в .htaccess прописывали дополнительно директивы перекидки на index.php. Теперь наша подсайт должен обращаться к главному .htaccess, а по правилам наследоваания этого не происходит: если во вложенной папке есть свой .htaccess, то читается только он.

Поэтому мы удалим .htaccess из папки demo, перенеся нужные директивы в основной .htaccess

Итого полный .htaccess теперь выглядит

RewriteEngine on
RewriteBase /     

RewriteCond %{HTTP_HOST} ^teamsense.ru
RewriteRule demo/(.*)$ http://demo.teamsense.ru/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^demo.teamsense.ru$
RewriteCond %{REQUEST_URI} !^/demo  
#RewriteRule ^(.*)$ /demo/$1 [L,QSA] 

# из .htaccess в папке /demo где установлен CI взял эти 5 строк и удалил тот .htaccess
RewriteCond $1 !^(index\.php|images|pics|js|robots\.txt|public) 
RewriteCond %{REQUEST_URI} !\.(css│js│jpg│gif│png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
...

Теперь поддомен ссылается на подпапку и работает вложенный сайт. Смотрите пример - demo.teamsense.ru.

 

Или другая ситуация. Основной сайт на ExpressionEngine, а в папке register я написал приложение по регистрации на мероприятие на Yii.

Тогда в корневом .htaccess

AddDefaultCharset utf-8

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !^/register

RewriteCond $1 !^(images|forms|register|index\.php|admin\.php|robots.txt|sitemap\.xml|js) [NC]
RewriteCond %{REQUEST_URI} !\.(css│js│jpg│gif│png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L,QSA]
Но в папке register, оставил тоже .htaccess (чтобы показывалась капча от Yii на форме заявки)
AddDefaultCharset utf-8

Options +FollowSymLinks 
IndexIgnore */* 
RewriteEngine on

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php 
RewriteRule . index.php

php_value post_max_size 10M
php_value upload_max_filesize 10M
php_value max_execution_time 200
php_value max_input_time 200
 
 
Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.