Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] nazwy zmiennych
Forum PHP.pl > Forum > PHP
szczurek
Witam, przygotowuję nową wersję strony która do tej pory działała na linkach typu plik.php?zmienna=wartosc
I przeważnie jako wartość podawałem id pozycji w bazie danych.

Aktualnie marzy mi sie zamieniać linki za pomocą mod_rewrite (nigdy tego nie robiłem na żywym organizmie, tylko jakieś testy)

i chciałbym żeby link wyglądający tak domena/dzial/ przeszukiwał jednak bazę danych po liczbach a nie stringach, bo jest to szybsze. Można to jakoś rozwiązać czy tylko w grę by wchodziło zrobienie linków w postaci domena/2/ ?
Mary$
czyli chcesz mieć linki typu http://www.mojastrona.pl/ksiazki/ i chcesz, żeby skrypt co zrobił?
szczurek
dokładnie to chcę mieć np. linki typu. www.mojastrona.pl/książki/tytuł/

I Teraz w bazie danych ta książka ma id, tytuł i recenzję np. a ja do funkcji przeszukującej bazę chciałbym podawać id czyli np. 5 a nie tytuł.

czyli np.

szukajUtworu(5), a nie szukajUtworu('tytuł') bo to z pewnością może trwać dłużej poza tym tytuł może być powtarzalny i musiałbym zrobić przeszukiwanie jeszcze pod kątem autora a z id nie muszę, mam unikat.
Tak na logikę wydaje mi się to niewykonalne, ale wolę zapytać ludzi którzy pracowali z mod_rewrite
kwiateusz
jednak nie da sie tak pięknie i musisz sobie gdzieś tam upchnąc id... np miedzy ksiazki i tytuł czyli www.mojastrona.pl/książki/id/tytuł/ i wtedy możesz ładnie to wykorzystać w skrypcie...
kriqs
witam

tak masz racje jest to nie wykonalne bo skad skrypt ma wiedziec jaki ma nr ta piosenka questionmark.gif ale wydaje mi sie ze to nie ma az takiego duzego wplywu na jakosc czy szukasz stringu czy id ale moge sie mylic.
kwiateusz
po stringach sie wolniej szuka, bo trzeba zadbac o pl znaki, jak autor zauważył tytuły mogą się powtarzać więc na taka ewentualność trzeba sie zabezpieczyć no i szukanie po liczbach zawsze jest szybsze bo tylko 2 wartosci porównujesz smile.gif wiec musisz sobie tam upchnąć id chyba ze zmienisz logike połowy aplikacji i np. jak w wordpressie mozna dowolnie konfigurować, ale to zapewne pół skryptu musiałbyś przebudować na ta ewentualność...
szczurek
Wiesz ja mam aktualnie napisane klasy obsługi bazy danych i w sumie większość po prostu na zasadzie dziedziczenia dodaje tylko to co trzeba więc może nie jest to tak dużo pracy, tylko nie za bardzo wiem co masz na myśli jak miałbym to rozwiązać.

Tak sobie kombinuję właśnie jak zrobić tak żeby było dobrze. tzn. mieć w linkach tytuły i autorów ale nie mieć nazw zmiennych (tu służy mi mod_rewite) i szukać po id. Chyba jednak będę musiał wplatać w link jeszcze id.
Niestety łatwe do zapamiętania dla użytkownika, ale chociaż dla wyszukiwarki...

No i jeszcze mały off topic, chociaż z mod_rewrite z pewnością związany. Chodzi mi o konfigurację mego modułu tak żeby działał pod Ubuntu 6.12 wszystko było dorzucane bo instalowany był tylko system z konsolą.

Działa apache2 bierze pod uwagę pliki .htaccess np. przy wpisie "Deny from all" phpinfo pokazuje że moduł mod_rewrite jest ładowany a gdy dodaję do pliku
  1. <?php
  2. RewriteEngine On
  3. RewriteCond %{HTTP_HOST}^.*$[NC]
  4. RewriteRule ^(.*)<a href="http://www.domain.com/" target="_blank">http://www.domain.com/</a> [R]
  5. ?>


To mi wywala błąd:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.


No i gadaj z nim. W pliku error.log apacha pojawia się taki wpis:
.htaccess: RewriteCond: bad argument line '%{HTTP_HOST}^.*$[NC]'

Przyznaję, że regułę przepisałem gdzieś z neta, ale wrzucając inne pojawia się to samo. Ma ktoś jakiś pomysł, chciałbym mieć możliwość korzystania z mod_rewrite na localhost
siemakuba
Musisz oddzielić %{HTTP_HOST}^.*$ od [NC] co najmniej jedną spacją.

pozdr.
szczurek
hmm do odpalenia katalogu rzeczywiście pomogło i nie wywala błędu, ale zamiast spodziewanego przekierowania na inną domenę po prostu pokazuje mi zawartość katalogu(nie ma indexu)
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.