Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] 2 reguły dzialają 3 nie, a całkiem podobna
Forum PHP.pl > Forum > Serwery WWW > Apache
MiFlo
Witam, męcze się już z tym pare godzn nad problem regułek oto zawartość .htaccess

Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]*)$ index.php?module=$1 [L]
RewriteRule ^([^/]*)/([^/]*)$ index.php?module=$1&plugin=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/([*])$ index.php?module=$1&plugin=$2&id=$3 [L]



Po wpisaniu adresu www.NazwaStrony.pl/Coś strona ładnie się pokazuje i działa tak jak należy ($_GET['module'] == 'Coś')
Po wpisaniu adresu www.NazwaStrony.pl/Coś/Coś2 strona ładnie się pokazuje i działa tak jak należy ($_GET['module'] == 'Coś' && $_GET['plugin'] == 'Coś2')

Natomiast przy wpisaniu adresu www.NazwaStrony.pl/Coś/Coś2/Coś3 apache wyświetla nam 404 dodam że również z ostatnią regułką wyglądającą w ten sposób:
Kod
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?module=$1&plugin=$2&id=$3 [L]
dzieje się to samo ( Error 404 )

Co z tym fantem zrobić?

Pytanie 2:
Czy zasadniczo mod_rewrite ma prawo dzialac inaczej (te same regulki) na rożnych serwerach? U mnie na Linuxowym apache (Localhost) nie działają kompletnie, jeżeli wyśle je na dedyka równiez z linuxowym apache dzialają jak należy (Oczywiście poza tą 3 regułką)

Z góry bardzo dziękuje za pomoc, pozdrawiam MiFlo
sf
Kod
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ test.php?module=$1&plugin=$2&id=$3 [L]


To działa na pewno, ctrl + f5 wciskaj bo często cachuje przy takich przekierowaniach, można też to zrobić np. tak:

Kod
RewriteRule ^([^/]*)/([^/]*)/(.*)$ test.php?module=$1&plugin=$2&id=$3 [L]


Co do pytanie drugiego to trzeba ustawić RewriteBase by lokalnie dobrze działało, czasem i na serwerach trzeba go użyć.
MiFlo
Z RewriteBase kombinowałem podawałem scieżkę bezwzględną do katalogu z plikami ( /home/user/public_html/nazwa ) jednak nic to nie zmienia.

Co do samej reguły fakt działa lecz jak ona jest nie dzie mi się dostać do plików które są w katalogu od głównego... (chodzi dokladnie o styl css, ale i wiele innych ważnych plików tracimy dostęp) pokazuje się strona zamiast pliku mimo że na początku .haccessa jest napisane że jeżeli pliki istnieje to ma wskazać na niego...

Edit:
Z ustawieniem RewriteBase na poprawne (w .htaccess) dalej dzieje się to dosamo bląd 404 a log z apacha wygląda następująco:
Kod
[Sat Oct 17 19:26:12 2009] [error] [client 127.0.0.1] File does not exist: /srv/www/htdocs/home, referer: http://127.0.0.1/~MiFlo/strona/

Czyli mimo ustawienia RewriteBase w .htaccess, jest ono ignorowane i zapisane w jakimś pliku konfiguracyjnym i ustawione na katalog /srv/www/htdocs, przynajmniej tak mi się wydaje

Edit2:
Ustawilem w pliku konfuguracyjnym apache2 żeby wskazyład na dobry katalog mimo to dalej jest 404 po na stronie nie ma katalogu home, czyli tak jakby regułka nie działała ale rewrite działa bo sam mi wywala błąd że nie może znaleśc tego katalogu....
sf
RewriteBase /~MiFlo/strona/

z tego co widzę to tak powinien wyglądać

U mnie nie ma problemu z dostępem do plików *.css, *.img. Wszystko działa ok z kodem, który Ci podałem.
MiFlo
RewriteBase które podałeś rozwiązało pytanie 2, wielkie dzięki jednak po dodaniu:
Kod
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?module=$1&plugin=$2&id=$3 [L]
na lokalnym serwerze jak i na dedyku dzieje się to samo, brak dostępu do plików ;/

Edit:
Rozwiązalem problem:
Kod
RewriteRule ^([^/]*)/([^/]*)/([^.]*)$ index.php?module=$1&plugin=$2&id=$3 [L]

Wielkie dzięki za pomoc!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.