У меня проблема с файлом 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/
Я не знаю, почему это работает на моем локальном сервере.
Я надеюсь, что кто-то может мне помочь.
ОБНОВИТЬ
Я получил его для работы, используя это:
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» в корневом каталоге)
Спасибо за помощь!
Прежде всего это избыточно:
RewriteCond $1 !^(index\.php|images|robots\.txt)
потому что ваши другие условия уже заботятся о существующих файлах и каталогах, поэтому я предлагаю удалить его.
Правило rewrite неверно, если вы хотите / 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
Если это не исправить, пожалуйста, опишите текущее поведение и то, что вы ожидаете, иначе это сложно.