Im avendo un problema con codeignighter quando si utilizza la mappatura della cartella htaccess personalizzata (un po 'strana). Tuttavia, dovrebbe funzionare tecnicamente, ma non è così. Qualcuno può aiutarmi?Codeigniter 404 su route valide quando si utilizzano riscritture mod personalizzate htaccess
Scenario 1 (funziona bene):
struttura di cartelle e file di chiave
/ 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]
accesso mydomain.com/api/ admin/per esempio mi porta alla mia azione admin-controller/index e carica th e vede bene.
var_dump su index.php per $ _REQUEST spettacoli
array (size=1)
'admin/' => string '' (length=0)
Scenario 2 (Non funziona):
struttura di cartelle e file di chiave
/.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]
accesso mydomain.com/api/admin/ per esempio mi viene alla Codeigniter 404 Pagina/vista.
var_dump su index.php per $ _REQUEST spettacoli (lo stesso scenario 1)
array (size=1)
'admin/' => string '' (length=0)
cosa sta succedendo qui? So che le riscritture in htaccess sono strane, ma per quanto riguarda ciò che Codeigniter vede, il percorso è lo stesso (admin /). Ma entrambi si comportano diversamente. Perché? Ho provato tutto quello che potevo pensare, per quanto posso vedere, il code-code vede il percorso giusto fino all'oggetto Request, ma il router CI in qualche modo non lo usa correttamente.
Qualsiasi aiuto apprezzato, fammi sapere se riesci a pensare a qualcosa che posso provare ad aiutare a debugare ulteriormente.
Nota: il motivo dell'impiego di double htaccess è che è possibile pianificare diverse istanze di CI in base al tempo/scenario (è possibile utilizzare la condizione di riscrittura per servire cartelle diverse anziché la cartella "corrente"). Attualmente non sto usando questo, quindi nello scenario 2, la radice ha solo la cartella "corrente".
prova questo 'RewriteRule^api /(.*)$ /api/index.php/$1 [L]' –
Che dire di qualsiasi file di asset all'interno della cartella api? come è comune a codeigniter, che dire di api/assets/mylogo.jpg? Qualsiasi richiesta per quello andrebbe poi nei file php codeigniter e verrebbe come un 404. Ho sbagliato? – decay
Giusto per chiarire, la cartella api contiene anche un file htaccess, il solito file htaccess di CI: http://pastebin.com/aHM9cjtr come menzionato nella domanda – decay