У меня возникли некоторые проблемы с приложением Codeigniter в подпапке на моем сервере вместе с установкой WordPress в корневом каталоге документа. Если я спрячу index.php URL-адреса Codeigniter с .htaccess
/codeigniter/.htaccess
DirectoryIndex index.php <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond $1 !^(index\.php|user_guide|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] </IfModule> <IfModule !mod_rewrite.c> ErrorDocument 404 index.php </IfModule>
И заставить WordPress игнорировать /codeigniter с RewriteCond %{REQUEST_URI} !^/(codeigniter).*$
/.htaccess
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_URI} !^/(codeigniter).*$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Затем перейдите на сайт www.mysite.com/codeigniter/my_controller/my_function , я получаю ошибку 404. No input file specified. Я нашел здесь , что добавление ? после RewriteRule ^(.*)$ index.php решает ошибку Codeiginiter 404.
/codeigniter/.htaccess
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Однако теперь я получаю ошибку WordPress 404, поэтому кажется, что я заменю index.php на index.php? в /codeigniter/.htaccess , правило перезаписи WordPress в /.htaccess , RewriteCond %{REQUEST_URI} !^/(codeigniter).*$ игнорируется. Есть ли лучший способ справиться с этим?
Заранее спасибо!
RewriteBase в каталоге codeigniter должен сказать /codeigniter/
RewriteBase /codeigniter
В противном случае переписывание в index.php заканчивается переходом на wordpress-маршрутизатор.