hľadal dva dni a nedokážem celkom nájsť správne riešenie kvôli svojmu nepochopeniu mod_rewrite a časových obmedzení v tomto projekte, takže dúfam, že niekto môže pomôcť.
Cieľom
Ak klient nemá správny súbor cookie, prepíše všetky žiadosti do koreňového indexu index.php. Ak má klient správny súbor cookie, umožnite mu prezeranie podľa vlastného želania.
Problém
Htaccess v mojom podadresári preberá nad mojím koreňovým htaccess, takže požiadavky ako www.mydomain.com/subdir/index.php nie sú presmerované.
Môj koreň .htaccess
Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*pass.*$
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?url=$0 [NC]
Môj subdir htaccess
RewriteEngine On
RewriteBase /
RewriteCond $1 !.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Dodatočné informácie
V ideálnom prípade sa snažím vytvoriť chránené heslomoblasť, takže všetky požiadavky sú smerované na index.php, kde je možné zadať heslo a po overení sa vytvorí súbor cookie, čo umožňuje bezplatné prehliadanie obsahu a podadresárov. Takže ak existuje lepší spôsob, ako to dosiahnuť, dajte mi prosím vedieť a ja som nebol preč .htpasswd, pretože potrebujem vlastné prihlasovacie, chybové a úvodné stránky.
Subdir .htaccess je tiež obsluha adresy URL ExpressionEngine.
Vďaka.
odpovede:
20 pre odpoveď č. 1Povoliť vykonávanie pravidiel prepísania z rodiča.htaccess (htaccess z nadradeného priečinka), musíte ho výslovne povoliť (Apache bude považovať pravidlá prepisovania v aktuálnom .htaccess za jediné, ktoré je potrebné vykonať, pokiaľ prepisovaná URL zostane v rovnakom podpriečinku).
Tento riadok musíte pridať do svojho .htaccess v podadresári:
RewriteOptions inherit
Manuál Apache: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions