Autor Zpráva
echo123
Profil *
Potrebujem vytvoriť .htaccess súbor, v ktorom budu definovane tieto pravidla:

-pri príchode na domenu bez www presmeruje na www.domena
-namiesto /nieco/nejaky-text-1 zobraziť index.php?p1=nieco&p2=nejaky-text-1
-pre zložky css, images, js, admin vyššie uvedené neplatí. zobrazovanie v týchto súboroch sa správa ako bez mod_rewrite
-ak user zadá napr. /includes (zložka existuje, ale nieje uvedená vo výnimkách), nech sa mu zobrazí index.php

skúsil som už niečo vlastné, ale nefungovalo to presne ako som chcel

ErrorDocument 404 /index.php
RewriteEngine On

RewriteCond %{HTTP_HOST} ^domena.sk [NC]
RewriteRule (.*) http://www.domena.sk/$1 [R=301,L,QSA]

RewriteRule ^css/(.*) css/$1 [L]
RewriteRule ^images/(.*) images/$1 [L]
RewriteRule ^js/(.*) js/$1 [L]
RewriteRule ^admin(.*)? admin$1 [L]

RewriteRule ^([a-z]+)(/([a-zA-Z0-9\-]+))?$ index.php?p1=$1&p2=$3 [L]


Nefunguje toto:
-ak zadám domena/admin (zložka existuje a je uvedená vo výnimkách) presmeruje ma to na /admin/?p1=admin&p2= (s / na konci to funguje)
-ak zadam domena/includes (zložka existuje ale nieje uvedená vo výnimkách) presmeruje ma to na /includes/?p1=includes&p2= (s / na konci zobrazí index of /)

ďakujem
echo123
Profil *
oprava:
-ak zadam domena/includes (zložka existuje ale nieje uvedená vo výnimkách) presmeruje ma to na /includes/?p1=includes&p2= (s / na konci zobrazí index of /includes)
Davex
Profil
Je to způsobeno doplňováním lomítek u adresářů. V podstatě ho stačí vypnout DirectorySlash Off.

Ty adresáře bych vyloučil trochu jinak:
RewriteCond %{REQUEST_URI} !^/((css|js|images)/|admin)
RewriteRule ^([a-z]+)(/([a-zA-Z0-9\-]+))?$ index.php?p1=$1&p2=$3 [L]
echo123
Profil *
Čo spôsobuje to DirectorySlash? nejak som tomu nepochopil
Davex
Profil
Zjednodušeně řečeno Apache automaticky doplňuje existujícím adresářům lomítko na konec - ve výchozím stavu je zapnuta konfigurační volba DirectorySlash On. Aby se tam to lomítko nedoplňovalo, tak se musí tato vlastnost vypnout.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0