.htaccess wszystko na index.php

Dlaczego mi to nie działa?

RewriteEngine On


RewriteBase /~kamil/bucket/




RewriteRule ^(.*)/$ index.php?strona=$1 [R,NC,L]

a takie coś już działa kiedy oczywiście w adres wpiszę blablabal.html

RewriteEngine On


RewriteBase /~kamil/bucket/




RewriteRule ^(.*)\.html$ index.php?strona=$1 [R,NC,L]

nie potrafię tego pojąć…

Spróbuj to:

RewriteEngine On

RewriteBase /~kamil/bucket/

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)/$ index.php?strona=$1 [L]

Oczywiście nie gwarantuję, ponieważ nie mam jak sprawdzić :slight_smile:

Ogólnie dotyczy to rozszerzeń. Np masz html i nawet jak w pliku php zrobisz include a.html to on będzie się robił w kółko. Nie wiem jak temu zapobiec, poza usunięciem przekierowania z istniejących plików (co niestety nie przekierowuje z includowanych plików). Jeśli ktoś ma lepsza odpowiedź z chęcią ją poznam :slight_smile:

ja to wziałem z kursu videokurs.pl, koleś robi to identycznie, u niego działa a u mnie nie…

A jak wyglądała witryna z tego tutka ?

normlanie, to nie jest witryna lecz sam plik, facet uczy jak działa mod_rewrite jednak mi to nie działa a przepisałem identycznie znak w znak…

Sprawdziłem twój skrypt. Działa on. Np wchodzisz w link:

www.drobok.tk/test/

Wymagany jest / na końcu (bo w regule tak masz). I z plikiem index.php:

<?php

echo $_GET['strona'];

?>

Oraz plikiem htaccess:

Options +FollowSymlinks

RewriteBase /

RewriteEngine on

RewriteRule ^(.*)/$ index.php?strona=$1 [R,NC,L]

(musiałem zmienić by działało na cba)

Wszystko działa. Jeśli chcesz by działało bez / wystarczy wywalić go z reguły (jednak wtedy będzie przekierowywać również .css etc)

a jednak, nie wiedziałem że musi być też / , z nim działa… to wszystko przez to że o wyrażeniach regularnych nie mam pojęcia… muszę się podszkolić w tym zakresie :slight_smile: