Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess] Jak napisać taką regułę?
Forum PHP.pl > Forum > Przedszkole
polcraft
witam wszystkich na tym forum,

niestety tworzenie reguł mod_rewrite nie jest moją mocną stroną dlatego proszę znających temat o pomoc.

Chcę stworzyć regułę która uprości taki link:
CODE
index.php?go=projekty&typ=projekty&id=81&order=ocena%20DESC


do postaci takiej:
CODE
http://www.kominki.net/projekt_kominka_81.html


Oczywiście zmienne jest "id".

Próbowałem tego:
CODE
RewriteRule ^projekt_kominka_([^-]+).html$ index.php?go=projekty&typ=projekty&id=$1&order=ocena%20DESC [L]
ale nie działa...

Podobna reguła ale dotycząca innego działu na mojej stronie działa bez problemu:
CODE
RewriteRule ^katalog_([^-]+).html$ index.php?go=katalog&id=$1 [L]
ale te linki są znacznie prostsze.

Będę wdzięczny za jakąś pomoc lub nakierowanie...
hateman
tak powinno działać:

Kod
RewriteEngine on
RewriteRule ^projekt_kominka_([0-9]+).html$ /index.php?go=projekty&typ=projekty&id=$1&order=ocena%20DESC [L]
polcraft
Cytat(hateman @ 19.09.2008, 22:07:48 ) *
tak powinno działać:

Kod
RewriteEngine on
RewriteRule ^projekt_kominka_([0-9]+).html$ /index.php?go=projekty&typ=projekty&id=$1&order=ocena%20DESC [L]


dzięki za odpowiedź ale niestety nie działa.
Teraz pokazuje błąd
CODE
Fatal error: Cannot use object of type DB_Error as array in /home/qpr48531/public_html/modules/projekty.php on line 95

Sprawdziłem i wiem że problem stanowi nadal nieprawidłowa zamiana id przez regułę.

Masz może jeszcze jakieś pomysły?
hateman
a to jak wpiszesz
Kod
index.php?go=projekty&typ=projekty&id=81&order=ocena%20DESC

to jest OK?

a co masz w linijce 95 pliku projekty.php?

zrób sobie nowy plik projekty.php i wyświetl w nim tylko zmienne:

Kod
<?php
echo 'go='.$_GET['go'].'<br/>
typ='.$_GET['typ'].'<br/>
id='.$_GET['id'].'<br/>
order='.$_GET['order'];
?>


i będziesz wiedział co masz źle
polcraft
Cytat(hateman @ 19.09.2008, 22:52:47 ) *
a to jak wpiszesz
Kod
index.php?go=projekty&typ=projekty&id=81&order=ocena%20DESC

to jest OK?



a co masz w linijce 95 pliku projekty.php?

zrób sobie nowy plik projekty.php i wyświetl w nim tylko zmienne:

Kod
<?php
   echo 'go='.$_GET['go'].'<br/>
   typ='.$_GET['typ'].'<br/>
   id='.$_GET['id'].'<br/>
   order='.$_GET['order'];
   ?>


i będziesz wiedział co masz źle


to działa bez problemu:
Kod
http://www.kominki.net/index.php?go=projekty&typ=projekty&id=81&order=ocena%20DESC

od 95 linii jest taki kod:
CODE
for($i=0; $i
if($proj[$i][0] == $id) {
if (isset($proj[$i-1][0]))
$menu[0] = $proj[$i-1][0];
if (isset($proj[$i+1][0]))
$menu[1] = $proj[$i+1][0];
}


Utworzyłem też tak jak radziłeś ten plik php i to wyrzuciło:
CODE
go=projekty
typ=projekty
id=81
order=ocena0DESC


ale dalej nie wiem co z tym zadziałać?

Po tym co wyrzuciło widać że po zastosowaniu reguły nieprawidłowo określony jest order.

Jest
Kod
order=ocena0DESC


a powinno być
Kod
order=ocena DESC
bo tak jest w linku pierwotnym.

Wiesz może jak zmodyfikować tą Twoją regułę aby pozbyć się tego zera które chyba stanowi problem?
hateman
a dlaczego ten for niedokończony??
for($i=0; $i

co do zmiennych jest ok
nawet z id
tylko ocena0DESC jest bez %20

spróbuj
Kod
RewriteRule ^projekt_kominka_([0-9]+).html$ /index.php?go=projekty&typ=projekty&id=$1&order=ocena DESC [L]
simple programmer
Popraw ten kod od lini 95 smile.gif

  1. <?php
  2. for($i=0; $i(WSTAW WARUNEK); $++) {
  3. if($proj[$i][0] == $id) {
  4. if (isset($proj[$i-1][0]))
  5. $menu[0] = $proj[$i-1][0];
  6. if (isset($proj[$i+1][0]))
  7. $menu[1] = $proj[$i+1][0];
  8. }
  9. ?>

musisz dodać warunek, tego niestety za Ciebie nie zrobię smile.gif
I pewnie ruszy.
hateman
sprawdziłem na swoim serwerze taka reguła wyświetla poprawnie zmienną order

Kod
RewriteRule ^projekt_kominka_([0-9]+).html$ /index.php?go=projekty&typ=projekty&id=$1&order=ocena\%20DESC [L]
polcraft
wprowadziłem Cię w błąd.

Skopiowałem całą pętlę for ale w lini 95 to jest to:
Kod
        if($proj[$i][0] == $id) {


Chyba jednak to nie wina kodu bo bez przekierowania działa to bez problemu.
hateman
to nie zmienia faktu, że ten for jest niedokończony

a zmieniłeś tą linijkę na tą co Ci podałem?
trzeba wrzucić "\" przed "%"
polcraft
Dzięki działa! biggrin.gif

zadziałało gdy dodałem do tej Twojej reguły jeszcze ten "\" przed %20 jak pisałeś.

Pętli for nie zmieniałem bo i tak działa a nie bardzo wiem co tam ruszyć...

Dzięki wielkie
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.