Мое намерение здесь состоит в том, чтобы иметь приложение 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