Помощь htaccess в совместном использовании Codeigniter и WordPress

Мое намерение здесь состоит в том, чтобы иметь приложение codeigniter с блогом в том же домене. Администратор для обоих должен быть отдельным.

Структура каталогов такова:

httpdocs/.htaccess httpdocs/application/ <== CI installation httpdocs/blog/ <== WP installation httpdocs/blog/.htaccess 

URL-адреса будут такими:

 mysite.com <== CI mysite.com/tools <== CI mysite.com/forum <== CI mysite.com/blog <== WP 

Я последовал этому руководству, чтобы настроить его, и это сработало хорошо.

Как мое приложение codeigniter, так и домашняя страница WP blog отображаются точно так, как должны, с правильными URL-адресами, стилями и т. Д.

Я также могу получить доступ к mysite.com/blog/wp-admin, как правило, для работы с компонентами WP.

Моя проблема – когда я пытаюсь получить доступ к фактическому сообщению в блоге, например:

 mysite.com/blog/fiction/what-is-going-on/ 

Когда я это сделаю, я получаю страницу ошибки Codeconfire 404 .

Мой root .htaccess (httpdocs / .htaccess):

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php|robots\.txt|blog|assets) RewriteRule ^(.*)$ index.php/$1 [L] 

Мой блог .htaccess (httpdocs / blog / .htaccess):

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 

Любая идея, что я делаю неправильно? Поставит больше информации, если потребуется. Заранее спасибо.

Хорошо, что решение должно использовать

CI .htaccess

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] 

а также

WP .htaccess

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /blog/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule> # END WordPress 

Это сделал трюк. Теперь все страницы отображаются без проблем.

Обычно я использую 2 набора условий на CI .htaccess (один в корневой папке)

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^blog/(.*)$ blog/index.php [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] 

Это позволит сначала обрабатывать URL-адреса блога, а затем обрабатывать URL-адреса CI. Вы должны быть осторожны, чтобы не иметь контроллеров или маршрутов, используя термин blog в своем приложении.

Я бы попробовал три вещи в вашем WordPress .htaccess (не трогайте CI – он выглядит правильно):

Сначала попробуйте удалить переднюю косую черту перед index.php:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] </IfModule> # END WordPress 

Если это не сработает, попробуйте установить RewriteBase в / blog /:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /blog/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] </IfModule> # END WordPress 

Наконец, если ни одна из этих вещей не работает, вы можете попробовать вручную добавить «/ blog /» в вашу строку index.php в конце:

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule> # END WordPress