#php #.htaccess #codeigniter
#php #.htaccess #codeigniter
Вопрос:
На главном сайте работает WordPress с .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Я собираюсь создать приложение CodeIgniter в подкаталоге site.com/online/
Если просто добавить файл CI .hta в подпапку, это не сработает. CI .htaccess:
RewriteEngine on
RewriteCond $1 !^(index.php|robots.txt|img|styles|js)
RewriteRule ^(.*)$ /index.php?/$1 [L]
Возможно ли объединить два файла .htaccess или что-то сделать с .htaccess во вложенной папке CI?
Спасибо.
UPD.Спасибо за ответы, я перепробовал все варианты и в итоге перенес проект на поддомен.
Ответ №1:
Во-первых, ваш .htaccess должен быть таким:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} !^GETs/ online/ [NC]
RewriteRule . /index.php [L]
</IfModule>
#Then add this for CI handling in the same .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !index.php [NC]
RewriteRule ^online/(.*)$ online/index.php?/$1 [L,NC]
Затем вы можете удалить (или переименовать) .htaccess во online
вложенной папке.
Комментарии:
1. Спасибо за ответ. Когда я добавляю это, браузер возвращает значение 404, если ввести /online/welcome/
2. Если
online/welcome/
это допустимое имя каталога, и вы хотите, чтобы оно обрабатывалось какonline/index.php?/online
, то вышеуказанное правило необходимо смягчить, удалив условиеRewriteCond %{REQUEST_FILENAME} !-d
. Попробуйте сейчас, я отредактировал свой ответ.3. Привет. Браузер снова перенаправляет на Не найдено
4. 1 — этот подход сработал для меня (в принципе, просто добавьте подкаталог, в данном случае
online
, в правило перезаписи).
Ответ №2:
Попробуйте это для codeigniter .htaccess:
RewriteEngine on
RewriteBase /online
RewriteCond $1 !^(index.php|robots.txt|img|styles|js)
RewriteRule ^(.*)$ /index.php?/$1 [L]
В противном случае все запросы к этой вложенной папке были бы перенаправлены на wordpress.
Ответ №3:
Вы устанавливаете AllowOverride? Согласно документам, вам необходимо разрешить FileInfo
переопределения для mod_rewrite .