Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Mod rewrite - coś niegra :/
Forum PHP.pl > Forum > Przedszkole
bybek5
Mam problem z mod rewrite więc piszę tu, aby nie robić nowego tematu:
Mój .htaccess wygląda tak:

Kod
RewriteEngine On
   RewriteBase /
  
   # Przekierowanie bez www na www
  
   RewriteCond %{HTTP_HOST} ^gruntownie.pl$
   RewriteRule ^(.*)$ http://www.gruntownie.pl/$1 [R=301,L]
  
  
   RewriteRule ^index.html$ index.php [L]
   RewriteRule ^dodajogl.html$ dodajogl.php [L]


Index.php powinien się wyświetlać na index.html, a nic się nie zmiena sadsmiley02.gif
Nie mam linijki,
Kod
Options FollowSymLinks

bo wtedy nie działa przekierowanie strony (error)
cojack
Gdyby kolega wiedział za co odpowiada flaga [L] to by wiedział dlaczego nie wykonuje się reszta skryptu. I nic się samo nie powinno wyświetlać jako index.html, w zależności jak masz skonfigurowany serwer. A flaga [L] kończy działanie skryptu die ('nup');
erix
Proszę o tag tematu.
bybek5
Po części rozwiązałem mój problem. Wiem na przykład jak zmienić taki link:
Kod
forum.php?page=&cmd=show&id=1&category=2

na coś takiego:
Kod
RewriteRule ^post([^-]+)cat([^-]+).html$ forum.php?page=&cmd=show&id=$1&category=$2 [L]


Ale nie wiem jak zmienić to:
Kod
pokaz_sz_ogl.php?idogl=50&tytul=Pi%EAkny%20dom%20wolno%20stoj%B1cy,%20du%BFa%20dzia%B3ka


To: pokaz_sz_ogl.php?idogl=50 , mógłbym zmienić na:
Kod
pokaz_sz_ogl.php?idogl=$1
RewriteRule ^szczegol([^-]+)


Ale jak zmienić tytuł, aby był przyjaźniejszy?
Maxik
Twórz sobie coś takiego jak slug z tytułu ogłoszenia, czyli string bez polskich znaków i _ zamiast spacji, wtedy wyświetlaj wg. niego lub jeśli wartość parametru tytul nie ma znaczenia to generuj po prostu linki ze slugiem, bez zapisywania ich do bazy.
bybek5
hmm. W sumie to nie wiem o co chodzi z tym slug'iem. Nie znam php. Czy mógłbyś mi napisać to w przykładzie??
Maxik
Ja tworzę sluga tak:
  1. <?php
  2. str_ireplace(array(" ", "ą", "ś", "ć", "ń", "ę", "ó", "ł", "ż", "ź", "%"), array("_", "a", "s", "c", "n", "e", "o", "l", "z", "z", "_"), preg_replace('|[[:space:]]+|i', ' ', strtolower($tytul)));
  3. ?>

Zamienia to coś takiego: 'ąęabc dę', na 'aeabc_de'
bybek5
No ok, ale jak wtedy zrobić mod rewrite na zmienną tytuł?
Maxik
Gdzieś tam sobie generujesz linki do ogłoszeń, to zamiast dawać
  1. <?php
  2. 'tytul='.$tytul daj 'tytul='.str_ireplace(array(" ", "ą", "ś", "ć", "ń", "ę", "ó", "ł", "ż", "ź", "%"), array("_", "a", "s", "c", "n", "e", "o", "l", "z", "z", "_"), preg_replace('|[[:space:]]+|i', ' ', strtolower($tytul)));
  3. ?>
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.