Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem .htaccess a presmerovanie bez / na konci

Základ je rozumieť tomu, čo robíš. Na to slúži dokumentácia k mod_rewrite pre posledný Apache, prípadne pre staršiu verziu. Akú máš vlastne verziu (v tomto prípade to je asi jedno, ale je lepšie pozerať sa na dokumentáciu k tomu, čo máš)? To zistíš buď v hlavičkách odpovede tvojho servera alebo keď spustíš Apache s parametrom -v.

Ja v tej dokumentácii napr. čítam, že RewriteCond sa vzťahuje na nasledujúci RewriteRule, preto mi nie je jasné, prečo máš RewriteCond nad DirectorySlash Off.

DirectorySlash Off hovorí, že mod_dir nemá dopĺňať lomítko na koniec v prípade, že ide o adresár. Toto vyzerá ok.

Ďalší riadok máš RewriteCond, v ktorom je premenná THE_REQUEST_FILENAME. V dokumentácii vidím, že existuje REQUEST_FILENAME a THE_REQUEST_FILENAME tam nikde nevidím. Takže to bude asi preklep. V tejto podmienke kontroluješ, či názov súboru obsahuje medzeru + lomítko + hocijaký reťazec + ďalšie lomítko nasledované medzerou, koncom reťazca alebo otáznikom. Neviem, či je to to, čo chceš - ja som to prestal čítať už pri prvej medzere, pretože sa mi nezdá, že by si chcel obmedzovať názov súboru na taký, ktorý obsahuje medzeru.

Ak je predchádzajúca podmienka splnená, presmeruješ dopyty, ktoré končia lomítkom na také, ktoré lomítkom nekončia. Použil si flag R=301 a L, takže to bude s permanentným presmerovaním a je to posledné pravidlo, ktoré sa berie do úvahy. Toto vyzerá na prvý pohľad ok už aj kvôli tomu, že sa to nápadne podobá na to, čo ti písal Kurt. Chýba mi tam jedno lomítko pred $1, ja by som ho tam dal.

Ďalší blok hovorí o tom, že keď je to adresár (prvý RewriteCond) a URL nekončí lomítkom (druhý RewriteCond), tak ho interne presmeruj na URL s lomítkom. Ak používaš Indexes alebo možno v nejakých iných špeciálnych prípadoch to má zmysel, inak je to zbytočnosť, ale budiž.

Pri písaní/testovaní rewrite pravidiel si daj do konfigurácie len jedno pravidlo a testuj len to (tak ako píše Kurt nižšie). A použi 302 namiesto 301, aby si sa nepopálil na tom, že sa to kešuje. Keď ti to bude fungovať, môžeš to zmeniť na 301. Ja by som tam asi tú 302 nechal aj po dopísaní pravidiel, pretože by som nechcel, aby mali používatelia nakešované niečo, čo sa potom ťažšie mení.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny