mod_rewrite, поддомен и htaccess в CodeIgniter - PullRequest
0 голосов
/ 07 марта 2012

Сейчас я работаю над проектом интернет-магазина в codeigniter. В конце концов, на поддоменах будет несколько интернет-магазинов, а на основном домене - главная страница.

Предполагается, что все будет динамично, так что интернет-магазины получат свои собственные субдомены. Информация о магазине находится в базе данных. Допустим, у меня есть таблица MySQL, которая содержит такую ​​информацию:

  • Интернет-магазин: Магазин бобов
  • webshop_subdomain: bobsshop

и т. Д.

Теперь в файле .htaccess я хочу создать правило перезаписи, чтобы bobsshop.mydomain.com переписывался на mydomain.com/bobsshop/, так как я работаю в Codeigniter с контроллерами.

Вы должны иметь в виду, что index.php также должен быть переписан, а также должна быть возможность создавать подстраницы, такие как bobsshop.mydomain.com/contact/

.

Я сделаю php-скрипт, который проверит, существует ли поддомен в базе данных, и если он не существует, то посетитель увидит 404.

Моя настройка DNS выглядит следующим образом:

  • mydomain.com xxx.xxx.xxx.xxx
  • *. Mydomain.com xxx.xxx.xxx.xxx

Где xxx.xxx.xxx.xxx - это IP-адрес моего сервера.

Я действительно никогда раньше не работал с htaccess / mod_rewrite. Это можно сделать? И есть ли кто-нибудь, кто может помочь мне сделать это?

Извините за мой английский. Надеюсь, вы понимаете, что я пытаюсь сделать.

Заранее спасибо

1 Ответ

0 голосов
/ 08 марта 2012
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^((?!www\.)(?!mydomain\.com)[^\.]+)\.
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?/%1/$1 [L] 

Входной URL - http://adasd.mydomain.com/test

1    RewriteCond %{HTTP_HOST} ^((?!www\.)(?!mydomain\.com)[^\.]+)\.

     This condition was met

2    RewriteRule ^(.*)$ http://www.mydomain.com/index.php?/%1/$1 [L]

     This rule was met, the new url is http://www.mydomain.com/index.php?/adasd/test
     The tests are stopped, using a different host will cause a redirect

Выходной URL - http://www.mydomain.com/index.php?/adasd/test

Затем вы можете удалить index.php из URL-адреса с помощью

  1. Откройте config.php из каталога system / application / config и замените $config['index_page'] = "index.php" с $config['index_page'] = ""
  2. Реализация вышеупомянутого файла .htaccess

В некоторых случаях настройка по умолчанию для uri_protocol не работает должным образом. Чтобы решить эту проблему, просто замените $config['uri_protocol'] = "AUTO" на $config['uri_protocol'] = "REQUEST_URI" в system / application / config / config.php

...