Mam problem z codeignighter przy użyciu niestandardowego (nieco dziwne) mapowania folderów htaccess. Powinien jednak technicznie działać, ale tak nie jest. Czy ktoś może mi pomóc?Codeigniter 404 na prawidłowych trasach podczas korzystania z niestandardowego przepisu htaccess modyfikuje
Scenariusz 1 (działa poprawnie):
Struktura folderów i kluczowe pliki
/ 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]
dostępu mydomain.com/api/ admin/na przykład przenosi mnie do mojej akcji administratora/indeksu i ładuje ją e widoki dobrze.
var_dump na index.php do $ _REQUEST pokazy
array (size=1)
'admin/' => string '' (length=0)
Scenariusz 2 (Nie działa):
struktura folderów i plików kluczowe
/.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]
dostępu mydomain.com/api/admin/ np dostaje mnie do CodeIgniter 404 strony/widoku.
var_dump na index.php za $ _REQUEST pokazach (tak samo jak scenariuszu 1)
array (size=1)
'admin/' => string '' (length=0)
Co tu się dzieje? Wiem, że przeróbki htaccess są dziwne, ale o ile widzi Codeigniter, trasa jest taka sama (admin /). Ale oboje zachowują się inaczej. Czemu? Próbowałem wszystkiego, co mogłem wymyślić, o ile widzę, codeigniter widzi właściwą ścieżkę, jeśli chodzi o obiekt żądania, ale router CI w jakiś sposób nie używa go poprawnie.
Każda pomoc doceniona, daj mi znać, jeśli możesz wymyślić coś, co mogę spróbować pomóc w debugowaniu tego dalej.
Uwaga: powodem, dla którego używam podwójnego htaccess, jest możliwość planowania różnych instancji CI w zależności od czasu/scenariusza (możesz użyć warunku przepisywania, aby wyświetlać różne foldery zamiast "bieżącego"). Obecnie nie używam tego, więc w scenariuszu 2 root ma tylko jeden "aktualny" folder.
wypróbuj to 'RewriteRule^api /(.*)$ /api/index.php/$1 [L]' –
Co z plikami zasobów w folderze api? jak to często bywa z codeigniter, a co z api/assets/mylogo.jpg? Wszelkie prośby o to następnie trafiłyby do plików php codeigniter i pojawiłyby się jako 404. Czy się mylę? – decay
Aby wyjaśnić, folder api zawiera również plik htaccess, zwykle plik htaccess CI: http://pastebin.com/aHM9cjtr, jak wspomniano w pytaniu – decay