Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]mod_rewrite
Forum PHP.pl > Forum > Przedszkole
ed3k
Witam!

Chcę użyć maskowania adresów poprzez mod_rewrite. Stworzyłem plik .htaccess w katalogu głównym strony (tam gdzie mam plik index.php). Przykładowy link mojej strony:

http://localhost/_serwis/index.php?option=...5&Itemid=93

kod pliku .htaccess
Kod
RewriteEngine on
RewriteRule ^start.html$ index.php?option=com_content&task=view&id=$i&Itemid=93


Nie działa mi to maskowanie. Czy w ogóle mam zainstalowany mod_rewrite? Jak to porządnie sprawdzić? W internecie znalazłem jedynie komendy, a nic na temat instalacji.

W tym temacie jestem zielony.

Proszę o pomoc!
wookieb
w httpd.conf to zobaczysz.
Poza tym sprawdz czy masz wlaczona obsluge htaccess. Jezeli nie wiesz czy jest ok to wrzuc zawartosc swojeg httpd.conf na wklej.pl i podaj link
ed3k
ten plik u mnie jest pusty :/
drPayton
Czyli zapewne korzystasz z jakieś paczki serwerowej (krasnal? wamp? xampp?), która ma własne pliki konfiguracyjne. Napisz jakiej, albo sam poszukaj pliku zawierającego ciąg "LoadModule rewrite_module modules/mod_rewrite.so" (bez cydzysłowów oczywiście winksmiley.jpg
ed3k
Działam na Ubuntu 8.04, instalowalem php i mysql z paczek: http://zyraf.pl/index.php5?s=artykuly&k=6&a=28
drPayton
Konfigurację serwers masz w:
Kod
/etc/apache2/apache2.conf

A tu: http://serverlamp.blogspot.com/2008/04/mod-rewrite.html jak włączyć mod_rewrite
Pilsener
Jak już uporasz się z instalacją to stwórz plik .htaccess:
Kod
RewriteEngine On
RewriteRule index.html index.php [L]


I wpisz w przeglądarce index.html - powinno zamienić na index.php

Potem już górki - zamiast bawić się w dwie strony reguł dajesz:
Kod
RewriteRule ([^-]*).html$ ?i=$1 [L]


I tworzysz adresy typu:
filmy/sensacyjne,slowo1,slowo2;34;678.html
Czyli w rzeczywistości:
?i=filmy/sensacyjne,slowo1,slowo2;34;678
Odbierasz potem zmienną $_GET['i'] i parsujesz wg Twojego sekretnego sposobu - np. / to kategorie, przecinek - słowa kluczowe a średniki - identyfikatory w bazie.
ed3k
Cytat(drPayton @ 9.10.2008, 06:40:23 ) *
Konfigurację serwers masz w:
Kod
/etc/apache2/apache2.conf

A tu: http://serverlamp.blogspot.com/2008/04/mod-rewrite.html jak włączyć mod_rewrite


niestety nie dziala sad.gif
drPayton
No ja dalej nie pomogę, bo nie używam paczkowanych serwerów winksmiley.jpg Musisz poczekać aż temat odwiedzi ktoś kto korzysta z LAMP'a lub poszukac na googlach - wiesz czego szukać, więc wpisz +LAMP + mod_rewrite i testuj winksmiley.jpg
sf
@ed3k: jak nie umiesz ręcznie ( co było w tym opisie i to powinno działać ) to włącz przez odpowiednie wywołanie :

sudo a2enmod rewrite

potem restart apachce

mam ubuntu od 3 lat i działa, a jak nie działa to podaj błędy z logów jakie występuje
ed3k
Kod
sudo a2enmod rewrite
sudo: unable to resolve host ed3k-laptop
This module is already enabled!


Niby jest ok, ale nie maskuje.
mroczek
Spróbuj najpierw jakieś proste maskowanie, może coś nie tak z Twoją regułą?
ed3k
moja reguła
Kod
RewriteEngine On
RewriteRule ^cos.html$ index.php?option=com_content&task=view&id=109&Itemid=78


wpisujac na localhoscie:
http://localhost/_serwis/cos.html zwraca mi błąd nieznalezionego pliku. Index.php?op...=78 jest żywcem skopiowana z pasku url.
drPayton
Cytat(ed3k @ 10.10.2008, 22:41:42 ) *
moja reguła
Kod
RewriteEngine On
RewriteRule ^cos.html$ index.php?option=com_content&task=view&id=109&Itemid=78


wpisujac na localhoscie:
http://localhost/_serwis/cos.html zwraca mi błąd nieznalezionego pliku. Index.php?op...=78 jest żywcem skopiowana z pasku url.



Spróbuj:
Kod
RewriteEngine On
RewriteRule ^cos.html$ /_serwis/index.php?option=com_content&task=view&id=109&Itemid=78



eee, nie, działa tak samo czyli prawidłowo... hmmm, a nie wpisałeś przez pomyłkę cos.htm zamiast cos.html?
ed3k
wpisalem 'cos.html'
drPayton
No to problem jest po stronie serwera, bo zawartość htaccess jest prawidłowa...
ed3k
to jak go skonfigurowac?
sf
Dodaj RewriteBase /_serwis/
ed3k
Kod
RewriteEngine On
RewriteBase /_serwis/
RewriteRule ^cos.html$ index.php?option=com_content&task=view&id=109&Itemid=78


Jesli tak to ma działać to nie działa. biggrin.gif
sf
No cóż. Regułka jest na pewno dobra bo u mnie działa. Czyta Ci ten plik .htaccess tak w ogóle? Zrób tam błąd (wpisz w jakąś linijkę "asdfasdfasdf" ) i zobacz czy Ci wyskoczy "Internal Server Error".
ed3k
Kod
RewriteEngine On
asdfasdfasdf
RewriteBase /_serwis/
RewriteRule ^cos.html$ index.php?option=com_content&task=view&id=109&Itemid=78


tak mam i nie ma żadnego błędu biggrin.gif
drPayton
No to teraz ja prosze kogoś o wyjaśnienie... o_O
sf
AllowOverride daj na All, a nie none

najprawdopodobniej w pliku :

/etc/apache2/sites-enabled/000-default

trzeba to zmienić, a najlepiej gdybyś to po ludzku zrobił, czyli włączył moduł użytkownika

tutaj opis :

http://sf.jogger.pl/2007/09/07/ubuntu-i-programista-php/
ed3k
Nic to nie dało :/

Jakieś nowe pomysły? smile.gif
BlackWorth
#LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so

w httpd.conf coś takiego powinno byś.
jak masz

#LoadModule rewrite_module modules/mod_rewrite.so
to usuń # przed tym.
Tak zobaczyłem Twój post i postanowiłem pogrzebać trochę w confie
Pozdro
blooregard
Cytat
Napisano 12.10.2008, 22:43:06


Myślę, że przez 3 lata @ed3k znalazł rozwiązanie, ale miło, że próbujesz pomóc. wink.gif
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.