CodeIgniter для нескольких приложений .htaccess проблема - PullRequest
0 голосов
/ 20 августа 2010

У меня проблема с файлом CodeIgniter .htaccess, и я надеюсь, что кто-нибудь мне поможет!Я не знаю регулярных выражений или как использовать .htaccess, я очень новичок в этом!

Моя проблема:

У меня такая структура файлов (много приложений):

- application
    - admin
    - site
- system
- index.php
- admin.php

И этот .htaccess (который отлично работает на localhost!)

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Что я хочу сделать:

Доступ к моему веб-сайту (веб-интерфейс) с http://www.mydomain.com/ и моим администратором (бэкэнд) с именем http://www.mydomain.com/admin/

Я не знаю, почему это работает на моем локальном сервере.

Я надеюсь, что кто-то может мне помочь,

UPDATE

Я заставил его работать, используя это:

RewriteEngine on

# If the user types "index.php" or "admin.php".
RewriteCond $1 !^(index\.php|admin\.php|images|robots\.txt)

# If the user types just "admin".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin$ admin\.php [L,QSA]

# If the user enter in any admin section, like "admin/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin\/(.*)$ admin\.php/$1 [L,QSA]

# If the user types any site section, like "site/section".
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index\.php/$1 [L,QSA]

Таким образом, я могу получить доступ к http://www.mydomain.com/admin или http://www.mydomain.com/admin/any-section (что указывает на "admin.php "в корневом каталоге)

И я могу получить доступ к http://www.mydomain.com/ или http://www.mydomain.com/any-section (что указывает на" index.php "в корневом каталоге)

Спасибо за помощь!

1 Ответ

3 голосов
/ 20 августа 2010

Прежде всего это избыточно:

RewriteCond $1 !^(index\.php|images|robots\.txt)

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

Ваше правило переписывания неверно, если вы хотите, чтобы / admin переписал в admin.php, с вашим текущим правилом это приведет к /index.php/admin. Вы не упомянули, если это проблема, если это так, сделайте это:

RewriteRule ^/admin$ admin.php [L,QSA]
RewriteRule ^(.*) index.php/$1 [L,QSA]

Также вы можете отладить переписывание с помощью RewriteLog: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog

Если это не помогло, пожалуйста, опишите текущее поведение и то, что вы ожидаете, иначе трудно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...