.htaccess во вложенной папке

#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 .