Skocz do zawartości

Mod Rewrite - pytanie co wpisac w php


master

Rekomendowane odpowiedzi

Witam!

Od kilku dni robie podchody do mod rewrite, czytałem odnośnie regułek na forum i innych stronkach. Stworzyłem sobię prostą regułkę dla jednej podstrony i niestety pojawił się problem, przez który zaraz wyrzucę monitor przez okno. Regułka jest bardzo prosta i wygląda tak :

RewriteRule ^mapa_serwisu_([^-]+).html /index.php?s=18〈=$1 [L]

Chodzi o to,że serwis jest w kilku językach i chcę,żeby w linku widoczna była wartość zmiennej przypisana danemu językowi. I teraz co mam wpisać w kodzie php w miejscu index.php?s=18〈=<?=$lang?> ?

Poza tym na jednej stronce wyczytałem, że powinienem umieścić w kodzie takie coś:

<?php

function rewrite_url_filter($data)

{

$link = $data[0];

$link = ereg_replace('"$', '', $link);

$link = explode('="', $link);

$_link = $link[0];

$link = $link[1];

// Tutaj wstawimy reguły

$link = $_link.'="'.$link.'"';

return $link;

}

function rewrite_ob_filter($string)

{

return preg_replace_callback('/(href|src|action)s*=s*"[^"]+"/', 'rewrite_url_filter', $string);

}

ob_start('rewrite_ob_filter');

?>

żeby przepisywać dynamiczne linki na krótkie "html" we współdziałaniu z mod rewrite. Tylko z czym to się je ? Za wszelką pomoc z góry dziękuję.

If I could have my wasted days back

Would I use them to get back on track?

Stop to warm and karma’s burning

Or look ahead , but keep on turning?

--------------------

iconm.gif - Metallica

Odwiedź Tattoo Studio i zrób sobie profesjonalny tattoo

Potrzebujesz więźbę dachową lub inne drzewo - tartak

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 31
  • Dodano
  • Ostatniej odpowiedzi

Albo ja nie rozumiem co chcesz osiągnąć albo źle napsiałeś.

Ty nie rozumiesz bo on źle napisał... :) więc jedno i drugie a nie 'lub' :)

Master - Artur słusznie zauważył brak logoki w Twoim przykładzie.

Odnośnie sesji (przykładu gdzies wyczytanego) to nie tyczy się on Twojego problemu.

Odnośnik do komentarza
Udostępnij na innych stronach

Poza tym przedmiotowy link przekazuje 2 parametry $s i $lang w związku z czym Twoja definicja wyrażeń regularnych w mod rewrite jest całkowicie błędna. Niestety nie w "tym kościele dzwonią"... Ale z pewnością Pan Erbit nakieruje Cię na właściwy trop :D Jak zauważyłem w/w jest w temacie mod_rewrite obeznany i nie są Mu obce zagadnienia [niezbędnych w tym wypadku] wyrażeń regularnych.

Tak już na marginesie dodam, że wartość sterującą językiem strony można zapisać w zmiennej sesji i całkowicie wyłączyć z url... Ale szczegóły tego zagadnienia wybiegają już poza ramy tego postu :D

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Ja zaś zauważyłem, że Pan Mion obeznany jest w PHP :)

Co do mod_rewrite, wróce jeszcze do tego tematu...

Odnośnie języka w sesji. Czy po to robione są przyjazne URL by dokładać potem sesje ? Takie rozwiązanie na pewno bedzie dobre dla usera ale czy bedzie dobre dla robotów !? Raczej nie...

Pozdrawiam.

[edyta]

Mion - wolę małymi krokami nakierować 'pytacza' na rozwiązania w taki sposób by sam wpadł na rozwiązanie. Nie wydaje mnie się by podawanie gotowych rozwiązań w przypadku braku pojmowania tematu było dobrym wyjściem...

Na temat mod_rewrite było na tyle dużo wyjaśniane iz master powinien dostrzec zasadę działania mod_rewrite i krótkich URL.

Poczekajmy więc na samego zainteresowanego.

Odnośnik do komentarza
Udostępnij na innych stronach

Skoro sesje nie są cool :) możemy się sposiłkować wystawieniem ciacha z parametrem języka przykładowo w ten sposób:

<a href="jezyk.php?jaki=PL">PL</a> <a href="jezyk.php?jaki=PL">PL</a>
<a href="jezyk.jaki_jezyk-DE.html">DE</a> <a href="jezyk.jaki_jezyk-DE.html">DE</a>

// plik jezyk.php
setcookie('jaki_jezyk',$_GET['jaki']);
Header("Location: $_SERVER[HTTP_REFERER]");
exit;

I mamy dostępną zmienną $_COOKIE['jaki_jezyk'];

Oczywiście ktoś może powiedzieć ze ciacha tez nie sa cool :P

Ponadto czy roboty akceptują ciacha wystawiane przez przeszukiwane serwisy? Jeśli nie to nie zaindeksują stron w innych wersjach językowych :( Jeśli tak, to zakładam, że powinna być dla nich dostępna strona w innej wersji językowej... ale tego nie sprawdzałem w praktyce...

Przekazywanie w adresie, jak mniemam ma tylko jedną wadę... łatwo zapomnieć o dopisaniu wartości odpowiedzialnych za język :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

No to jestem! :)

Sorki za nieobecność, ale była przerwa świąteczna, a ja chwilowo w domu nie mam kompa :blink: Do rzeczy - Chodziło mi o to, żeby strona o parametrze s=18 zmieniana była na mapa-serwisu, natomiast dalej, żeby z obecnego url`a wyciągany był parametr języka, wtedy całość ma postać mapa-serwisu_Pl dla wersji Polskiej, De dla wersji niemieckiej itd. Pisząc ten topik moją główną udrenką było nie napisanie samej regułki w htaccess ale to co muszę wpisać w kodzie php. Po zjedzeniu nieco nerwów i wyrwaniu kilku włosów ;) jakoś do tego doszedłem. Niestety nie wiem czy moje rozwiązanie jest dobre dla wyszukiwarek... W kodzie php wpisałem taką regułkę:


$link = preg_replace('#index\.php\?s=18〈=([0-9a-zA-Z \-]*)?#si', 'mapa-serwisu_\\1.html', $link);
	$link = preg_replace('#index\.php$#si', '\\1.html', $link);

Korzystając z okazji chciałbym zapytać Pana Erbita (i innych oczywiście) co o tym myśli...? :blink: Dziękuję wszystkim za zainteresowanie tematem i pozdrawiam.

If I could have my wasted days back

Would I use them to get back on track?

Stop to warm and karma’s burning

Or look ahead , but keep on turning?

--------------------

iconm.gif - Metallica

Odwiedź Tattoo Studio i zrób sobie profesjonalny tattoo

Potrzebujesz więźbę dachową lub inne drzewo - tartak

Odnośnik do komentarza
Udostępnij na innych stronach

...zapytać Pana Erbita...

Szanowny Panie master. Jeżeli to co za przykład Pan podałeś działa - oznacza, że doszedłeś Pan do rozwiązania problemu. Z drugiej strony Pański pierwszy post zawiera sporo niejasności. Mam nadzieję, żeś Pan uporał się do końca z problemem.

W każdym bądź razie kierunki masz Pan niezłe.

Niesety nie wydaje mnie się by ta konstrukcja wyrażenia była do końca poprawna

lang=([0-9a-zA-Z \-]*)

Jeśli naprawdę chcesz zropzumieć zagadnienia mod_rewrite to zerknij na to -> www.cms.rk.edu.pl/art_51.html

Popatrz także na to -> www.programuj.com/artykuly/www/regularne.php

a pozostałych spraw szukaj tak -> https://www.google.pl/search?hl=pl&q=wyra%C...aj+w+Google&lr=

Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Pański pierwszy post zawiera sporo niejasności.

Pokornie się przyznaję co do pierwszego postu, ale wtedy byłem nieco do tyłu w porównaniu z chwilą teraźniejszą. Jeśli chodzi o link to właśnie tą stronką podpierałem się w moich zmaganiach :)

If I could have my wasted days back

Would I use them to get back on track?

Stop to warm and karma’s burning

Or look ahead , but keep on turning?

--------------------

iconm.gif - Metallica

Odwiedź Tattoo Studio i zrób sobie profesjonalny tattoo

Potrzebujesz więźbę dachową lub inne drzewo - tartak

Odnośnik do komentarza
Udostępnij na innych stronach

w porównaniu z chwilą teraźniejszą.

Hmmm.. ale to i tak jeszcze mało.

Uzupełniłem wypowiedź wyżej o jeden istotny drobiazg. Tym drobiazgiem są 'wyrażenia regularne'. To bardzo obszerny temat - niemniej zapoznaj się z nim, na pewno bardzo często się przyda i to nie tylko przy mod_rewrite. Zrozum ten zapis, który sam podałeś

([0-9a-zA-Z \-]*)

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Cofam co powiedziałem, właśnie zdałem sobię sprawę,że to co z tego zakumałem znaczy tyle co g... !! :jezyk1:

If I could have my wasted days back

Would I use them to get back on track?

Stop to warm and karma’s burning

Or look ahead , but keep on turning?

--------------------

iconm.gif - Metallica

Odwiedź Tattoo Studio i zrób sobie profesjonalny tattoo

Potrzebujesz więźbę dachową lub inne drzewo - tartak

Odnośnik do komentarza
Udostępnij na innych stronach

Co to za niejasna koncepcja ....

Zastosowanie mod_rewrite i preg_replace() ...?

Z czym to się je... ? :jezyk1:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Co to za niejasna koncepcja ....

Zastosowanie mod_rewrite i preg_replace() ...?

Z czym to się je... ? :jezyk1:

Takie roziwązanie znalazłem w sieci imędzy innymi na w.w przez Erbita linkach. Jeśli znasz jakąś inną metodę to chętnie ją poznam bo szczerze mówiąc gubie się w tym...

If I could have my wasted days back

Would I use them to get back on track?

Stop to warm and karma’s burning

Or look ahead , but keep on turning?

--------------------

iconm.gif - Metallica

Odwiedź Tattoo Studio i zrób sobie profesjonalny tattoo

Potrzebujesz więźbę dachową lub inne drzewo - tartak

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności