Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Przyjazne linki jednowyrazowe
albectus
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.09.2010

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


Witam serdecznie. Zastosowałem na swojej stronie przyjazne linki, ktore mi w tytule sciagaja tytuł danego artykułu i zauwazylem probiem, kiedy tytuł ma postać "artykul-o-pewnej-osobie" jest wszystko dobrze ale jezeli tytuł jest bez myslnika np "oferta" to niestety strona sie nie otwiera. Gdzie tkwi problem? Ponizej moj plik hataccess [code
ErrorDocument 404 /index.php
ErrorDocument 403 /index.php
Kod
Options FollowSymLinks
RewriteEngine On

RewriteRule ^([^-]*),([^-]*)$ index.php?go=$1&kat=$2 [L]

RewriteRule ^art,([^-]*),(.+)$ index.php?go=art&id=$1&tytul=$2 [L]]


Ten post edytował albectus 24.04.2011, 11:26:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
.radex
post
Post #2





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Nie rób tak tego!

Po prostu przekieruj (za pomocą mod_rewrite) wszystko, co nie jest istniejącym plikiem lub folderem na index.php/X, a resztę rób po stronie PHP.

Wygląda to mniej-więcej tak (zapewne można to trochę polepszyć -- nie jestem specem od .htaccess -- ale powinno działać):

Kod
<IfModule mod_rewrite.c>
   RewriteEngine On
  
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>


I teraz to co masz po index.php/ jest dostępne w PHP za pomocą $_SERVER['PATH_INFO']

Serio, oszczędzisz sobie dużo kłopotu -- znacznie łatwiej parsować (i debugować) takie konstrukcje w PHP.

Ten post edytował .radex 24.04.2011, 13:49:51


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
albectus
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.09.2010

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


Dzieki kolego za rade, ale niestety twoj skrypt cos nie dziala nie mam nawet strony glownej. Co jeszcze musze zmienic? zaczynam z tym zabawe dopiero.
Go to the top of the page
+Quote Post
.radex
post
Post #4





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Bez zmian się nie obędzie, niestety.

Spróbuj na stronie głównej jedynie

  1. var_dump($_SERVER['PATH_INFO']);


I odpal http://adres_strony/foo/bar/

O ile niczego popsułem w kodzie .htaccess, który Ci podesłałem, powinieneś zobaczyć coś w stylu 'string(8) "foo/bar/"'.

I wtedy jak wcześniej pobierałeś dane poprzez coś w stylu

  1. $go = $_GET['go'];
  2. $id = $_GET['id'];


Tutaj będziesz miał coś podobnego do:

  1. $path = $_SERVER['PATH_INFO']; // ścieżka, np. 'foo/bar/'
  2. $segments = explode('/', $path); // zamieniamy to na tablicę, np. array('foo', 'bar')
  3.  
  4. $go = $segments[0];
  5. $id = $segments[1];
  6.  
  7. // (czy jakoś inaczej)


Będziesz musiał poeksperymentować -- na tym polega programowanie...

PS. Daj znać, jeśli w ogóle nie działa (albo pokazuje się błąd 500) -- wtedy coś zepsułem w .htaccess

Ten post edytował .radex 24.04.2011, 14:21:56


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
albectus
post
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.09.2010

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


ok zaraz do tego się zabieram, a jesli to by mnie przerosło na tą chwile i chce zmienic ten .htaccess zeby mi wyswietlalo tak jak mialem napisane i z adresem z "-" i bez to co musze zmienic?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 14:29