Помощь htaccess в совместном использовании Codeigniter и Wordpress - PullRequest
1 голос
/ 25 ноября 2011

Мое намерение здесь состоит в том, чтобы иметь приложение 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 домашняя страница блога отображаются точно так, как они должны, с правильными URL-адресами, стилями и т. Д.

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

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

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

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

Мой корень .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

Есть идеи, что я делаю не так? Будет размещена дополнительная информация, если требуется. Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 25 ноября 2011

OK, решение состоит в том, чтобы использовать

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

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

0 голосов
/ 30 ноября 2011

Я бы попробовал три вещи в вашем 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
0 голосов
/ 25 ноября 2011

Я обычно использую 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...