У меня возникла проблема с codeignighter при использовании пользовательского (несколько странного) отображения htaccess. Однако он должен технически работать, но это не так. Кто-нибудь может мне помочь?
Сценарий 1 (работает отлично):
Структура папки и файлы ключей
/ is the website root
/.htaccess
/api/ <this is the CodeIgniter Root, with index.php and default CI .htaccess>
. /Htaccess:
RewriteEngine On
RewriteRule ^api/(.*)$ /api/$1 [L]
доступ к mydomain.com/api/admin/, например, приводит меня к моему действию admin-controller/index и отлично загружает представления.
var_dump на index.php для $_REQUEST показывает
array (size=1)
'admin/' => string '' (length=0)
Сценарий 2 (не работает):
Структура папки и файлы ключей
/.htaccess
/current/.htaccess
/current/api/ <this is the CodeIgniter Root, with index.php and default CI .htaccess, this is the same folder/files/htaccess as above scenario>
. /Htaccess:
RewriteEngine On
RewriteRule ^(.*)$ /current/$1 [L]
/current/.htaccess:
RewriteEngine On
RewriteRule ^api/(.*)$ /api/$1 [L]
доступ к mydomain.com/api/admin/, например, приводит меня на страницу Codeigniter 404/view.
var_dump на index.php для показа $_REQUEST (То же, что и сценарий 1)
array (size=1)
'admin/' => string '' (length=0)
Что здесь происходит? Я знаю, что перезаписи htaccess странны, но, насколько видит Codeigniter, маршрут тот же (admin/). Но они оба ведут себя по-другому. Зачем? Я пробовал все, что мог придумать, насколько я вижу, codeigniter видит правильный путь до объекта запроса, но маршрутизатор CI каким-то образом не использует его правильно.
Любая помощь оценивается, дайте мне знать, можете ли вы придумать что-нибудь, что я могу попытаться помочь отладить это дальше.
Примечание: причина, по которой используется двойной htaccess, заключается в том, что я могу планировать разные экземпляры CI в зависимости от времени/сценария (вы можете использовать условие перезаписи для обслуживания разных папок вместо текущей папки). Im в настоящее время не использует это, поэтому в сценарии 2 корневой каталог имеет только одну "текущую" папку.