Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mod_rewrite] (chyba) proste przekierowanie, przekierowanie z a na b z zachowaniem ID
kebq
post 30.05.2006, 17:01:00
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.12.2005

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


witam
przepraszam jesli poruszam cos co juz bylo, widocznie nie doszukalem sie
przyznam ze jestem poczatkujacy jesli chodzi o mod rewrite
mianowicie mam adres typu:
strona.php?id=NUMER_ID
i chcialbym go przekierowac na:
DOWOLNY_CIAG_ZNAKOW-NUMER_ID.html
numer ID w jednym i drugim adresie sie nie zmienia,
dodany zostaje tylko ten dowolny ciag znakow w ktorym bedzie przemycany tytul ;-)
czy cos takiego jest mozliwe?
Go to the top of the page
+Quote Post
ave
post 30.05.2006, 17:08:36
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


chyba odwrotnie z DOWOLNY_CIAG_ZNAKOW-NUMER_ID.html na strona.php?id=NUMER_ID
  1. RewriteEngine On
  2. RewriteRule ^dowolny_ciag_znakow-([0-9]*).html            /strona.php?id=$1 [L]
Go to the top of the page
+Quote Post
kebq
post 30.05.2006, 17:11:31
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.12.2005

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


chodzi o to ze ten dowolny ciag znakow bedzie prawdopodobnie inny dla kazdego id (bedzie to przefiltrowany z polskich i specjalnych znakow tytul) wiec zamiast niego chyba takze trzeba by bylo wstawic jakies wyrazenie regularne
Go to the top of the page
+Quote Post
ave
post 30.05.2006, 17:23:46
Post #4





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


no to
  1. RewriteRule -([0-9]*).html$            /strona.php?id=$1 [L]

wtedy wszystko z koncowka -ID.html pujdzie na /strona.php?id=ID
Go to the top of the page
+Quote Post
kebq
post 30.05.2006, 17:34:37
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.12.2005

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


a gdybym chcial przed cos-ID.html wstawic niezmienny ciag udajacy folder to moge to zrobic tak?:
  1. RewriteRule folder/-([0-9]*).html$            /strona.php?id=$1 [L]

czy tez moze
  1. RewriteRule ^folder/-([0-9]*).html$            /strona.php?id=$1 [L]

w sumie nie do konca rozumiem funkcje karetki-daszku na poczatku regulki (^)
Go to the top of the page
+Quote Post
siemakuba
post 30.05.2006, 20:36:27
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


Cytat(kebq @ 30.05.2006, 18:34 ) *
w sumie nie do konca rozumiem funkcje karetki-daszku na poczatku regulki (^)

karetka-daszek - przepiękne określenie :)
do rzeczy, karetka-daszek ( :):) ) oznacza że jest to dokładnie początek ciągu który będziesz porównywał.

pierwsza opcja którą przedstawiłeś będzie pasowało do wszystkiego co będzie zawierało ciąg folder/-([0-9]*).html, np. folder/-12.html, siemafolder/-12.html

druga opcja, będzie pasowała do wszystkiego, co dokładnie pasuje do wzorca folder/-([0-9]*).html, więc folder/-12.html będzie pasowało, ale siemafolder/-12.html już nie.

^ - początek wzorca
$ - koniec wzorca

zbadaj tutaj: http://pl2.php.net/manual/pl/reference.pcr...tern.syntax.php - zasady są takie same.

pozdr.
Go to the top of the page
+Quote Post
kebq
post 30.05.2006, 21:04:38
Post #7





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.12.2005

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


tyle ze zarowno
  1. RewriteRule folder/-([0-9]*).html$            /strona.php?id=$1 [L]

jak i
  1. RewriteRule ^folder/-([0-9]*).html$            /strona.php?id=$1 [L]

bedzie pasowac chyba tylko do folder/-LICZBA.html czyli miedzy slashem a myslnikiem znika mi mozliwosc wstawienia tytulu jaka mialem tu
  1. RewriteRule -([0-9]*).html$            /strona.php?id=$1 [L]

jak dostosowac ta powyzsza regulke poprawnie obslugiwala URL folder/DOW_CIAG_ZNAKO-NUMER_ID.html?

BTW karetka-daszek wyszla z tego ze zaczalem sobie czytac o regulach i wyrazeniach i ten znak byl opisywany na przemian jako karetka i jako daszek biggrin.gif
Go to the top of the page
+Quote Post
siemakuba
post 30.05.2006, 21:11:36
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


Kod
RewriteRule ^folder/[^-]*-([0-9]*).html$            /strona.php?id=$1 [L]

zamiast [^-]* możesz ograniczyć np. do samych liter ( [a-z] ), do liter i cyfr ( [a-z0-9] ).
[^-] oznacza dowolny znak oprócz - (myślnik).

jezeli będziedsz ograniczał do np. tylko liter, możesz do flagi [L] dopisać jeszcze flagę NC, wtedy nie będzie miała znaczenia wielkość znaków. ([L,NC])

pozdr.
Go to the top of the page
+Quote Post
kebq
post 30.05.2006, 21:24:20
Post #9





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.12.2005

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


pozwol jeszcze ze zapytam czym dokladnie rozni sie gwiazdka (asteriks winksmiley.jpg od plusa? czy obydwa lacza ciagi?

EDIT: po zastosowaniu ciagu ktory podales strona cie kaszanii, do URLi wkrada sie ten ciag "folder/" tzn. linki wygladaja tak strona.pl/folder/obrazek.jpg przez co nie laduja sie obrazki, css i cala reszta

Ten post edytował kebq 30.05.2006, 21:30:57
Go to the top of the page
+Quote Post
siemakuba
post 31.05.2006, 00:08:06
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


Kod
pozwol jeszcze ze zapytam czym dokladnie rozni sie gwiazdka (asteriks od plusa? czy obydwa lacza ciagi?

żadne z nich nie łączy ciągów :) no, chyba że inaczej rozumiemy te pojęcie
* - łapie 0 lub więcej znaków które poprzedzają *
+ - łapie 1 lub więcej znaków które poprzedzają +

Kod
po zastosowaniu ciagu ktory podales strona cie kaszanii, do URLi wkrada sie ten ciag "folder/" tzn. linki wygladaja tak strona.pl/folder/obrazek.jpg przez co nie laduja sie obrazki, css i cala reszta

rozumiem, że obrazek powinien załadować się z adresu strona.pl/obrazek.jpg a nie strona.pl/folder/obrazek.jpg
wzięło się to z tego, że przeglądarka myśli że jesteś w podkatalogu /folder. A nie jesteś, ale to wie dopiero Apache :) Domyślam się też, że linki do obrazków, arkuszy css masz podane relatywnie?
  1. <img src="obrazek.jpg">
  2. <link rel="stylesheet" href="style.css">
Masz dwa rozwiązania:
1. wszystkie linki robisz absolutne:
  1. <img src="http://strona.pl/obrazek.jpg">
  2. <link rel="stylesheet" href="http://strona.pl/style.css">

2. dodajesz w sekcji <head> tag <base>
  1. <base href="http://strona.pl/">
i wtedy wszystkie linki relatywne będą rozwiązywane na podstawie atrybutu href tego taga.

pozdr.
Go to the top of the page
+Quote Post
kebq
post 31.05.2006, 18:20:36
Post #11





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 2.12.2005

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


wielkie dzieki!
nad tym base glowkowal bym pewnie kilka dni tongue.gif
a tak na powaznie to wszystko juz dziala

BTW do osob czytajacych to w przyszlosci:
tag base dodajemy przed jakimkolwiek linkiem
np. powinien byc koniecznie przed linkowaniem do cssow

Ten post edytował kebq 31.05.2006, 18:21:03
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 Wersja Lo-Fi Aktualny czas: 25.06.2025 - 20:06