Som nový v .htaccess a hľadal som dni, ale nenašiel som riešenie, ktoré by vyhovovalo mojej situácii.
Takže v podstate to, čo chcem, je použiť.htaccess presmeruje žiadosti do podpriečinka bez toho, aby sa podpriečinok zobrazil v paneli s adresou prehliadača. S nasledujúcim súborom .htaccess by som to mohol dosiahnuť. (nezabudnite, že je to na lokálnom počítači namiesto skutočného webhostingu)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteRule ^(/.*)?$ /subfolder/index.php?rt=$1 [L,QSA]
Všimnite si, že mám "rt = $ 1", aby som získal informácie o smerovaní cesty z poľa $ _GET []. Vyzerá to však, že prepísaním adresy URL došlo k prepísaniu, ktoré potom pokazilo moju funkciu smerovača.
Napríklad cieľová adresa URL pre funkciu .ajax je „index / survey_update“, čo by malo viesť k indexController-> survey_update ().
Ale s presmerovaním sa teraz cesta stáva
/ Podpriečinky / podpriečinky / index / survey_update / survey_update.
A router už nedokáže rozlíšiť správny radič a vykonať akciu.
Môže mi niekto dať vedieť, prečo vyzerá adresa URL vtipne(duplikuje sa podpriečinok a posledná sekcia sa duplikuje) a existuje spôsob, ako extrahovať správnu časť adresy URL (t. j. index / prieskum_update v tomto prípade) zmenou konfigurácie .htaccess? Vďaka.
odpovede:
1 pre odpoveď č. 1Môžete použiť iba toto pravidlo:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/?$ /subfolder/index.php?rt=$1 [L,QSA]
Zapamätaj si to RewriteCond
je použiteľné iba pre nasledujúce RewriteRule
.