Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [htaccess] Jak napisać taką regułę?
polcraft
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.09.2008

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
hateman
post
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
polcraft
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.09.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
hateman
post
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
polcraft
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.09.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
hateman
post
Post #6





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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]


Ten post edytował hateman 19.09.2008, 22:29:36
Go to the top of the page
+Quote Post
simple programme...
post
Post #7





Grupa: Zarejestrowani
Postów: 74
Pomógł: 5
Dołączył: 17.07.2007
Skąd: Krakow

Ostrzeżenie: (0%)
-----


Popraw ten kod od lini 95 (IMG:http://forum.php.pl/style_emoticons/default/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ę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
I pewnie ruszy.

Ten post edytował simple programmer 19.09.2008, 22:31:29
Go to the top of the page
+Quote Post
hateman
post
Post #8





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
polcraft
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.09.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
hateman
post
Post #10





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


to nie zmienia faktu, że ten for jest niedokończony

a zmieniłeś tą linijkę na tą co Ci podałem?
trzeba wrzucić "\" przed "%"
Go to the top of the page
+Quote Post
polcraft
post
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 19.09.2008

Ostrzeżenie: (0%)
-----


Dzięki działa! (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:58