Skocz do zawartości

Przyjazne URL'e - lepsza indeksacja [NICE URL]


Rekomendowane odpowiedzi

Witam.

Chciałbym prosić osoby znające sie na PHP o pomoc w zastosowaniu funkcji PATH_INFO do

adresów katalogu opartrgo na mini.otwarty.pl dla wszystkich którzy nie maja dostępu do mod_rewrite a chcialiby miec przyjazne url'e dla lepszej indeksacji przez roboty.

Znalazłem w sieci takie informacje, ale sam nie potrafie przerobic kodu:

https://wortal.php.pl/wortal/artykuly/pomys.../przyjazne_urle

https://blog.stanowski.info/2006/04/03/nice...-framework-php/

https://forumweb.e-vip.pl/viewtopic.php?t=10183

https://forum.php.pl/index.php?showtopic=14301&st=60

Wstęp

Standardowy adres internetowy skryptu PHP wygląda dość nieciekawie.

https://localhost/index.php?zmienna1=wartosc1& zmienna2=wartosc2&zmienna3=wartosc3

Zlepek pytajników, ampersantów (&) i jakiś wyrazów. Całość przypomina bardziej efekt przejścia kota po klawiaturze niż coś, co zwykły śmiertelnik może zapamiętać i powtórzyć koledze w tramwaju. Nie pozostaje nam zatem nic innego, jak tylko poszukanie sposobu, na uczłowieczenie naszych linków. Jednym ze sposobów, jakie widziałem jest tworzenie dość skomplikowanego drzewa katalogów, w stylu:

/public_html/

/public_html/firma

/public_html/firma/kontakt

/public_html/filma/oferta

...

W każdym z katalogów jest plik index.php, który includuje odpowiednie pakiety z "lokalizacji głównej". Efektem tego rozwiązania jest url w stylu:

https://localhost/firma/kontakt

I byłoby to rozwiązanie idealne, gdyby nie... Niewygoda w tworzeniu takiej aplikacji, polegająca na tym, że w każdym katalogu musimy includować "główny engine" a dodatkowo próba przekazania jakiejkolwiek wartości poprzez URL ($_GET) znowu doprowadza nas do punktu wyjścia. A skoro tego właśnie chcemy uniknąć, więc nie pozostaje nam nic innego, jak rozważenie kolejnych metod.

PATH_INFO

Najprostrzym i niewymagającym żadnych modyfikacji sposobem na uzyskanie przyjaznych adresów jest użycie zmiennej globalnej PATH_INFO. Załóżmy, że wpiszemy w pasek adresowy przeglądarki adres w takiej formie:

https://localhost/index.php/wartosc1/wartosc2/wartosc3

oraz stworzymy plik index.php o treści:

<?php

echo $_SERVER['PATH_INFO'];

?>

Efektem połączenia linka i pliku będzie napis w przeglądarce:

/wartosc1/wartosc2/wartosc3

Mamy więc ładnie podane parametry działania skryptu. Uważni czytelnicy zauważyli, że pozbywamy się w tej sytuacji jawnego określenia nazw zmiennych, do których powyższe wartości powinny trafić, nie ma także nic w zmiennej $_GET. Zatem już widać, że ważna jest kolejność wartości, jakie podajemy w URLu. Nie wiemy jeszcze, co zrobić z tymi wartościami. Zmodyfikujmy zatem nasz plik:

<?php

$arrParams = array();

$strDefaultPath = '/newsy/pokaz/strona/1';

$_SERVER['PATH_INFO'] = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;

$arrParams = explode( '/', substr( $_SERVER['PATH_INFO'], 1) );

echo '<pre>';

var_export( $arrParams );

echo '<pre>';

?>

Zasada działania skryptu jest prosta. Sprawdza on, czy ustawiona jest zmienna PATH_INFO. Jeśli nie, przypisywana jest do niej wartość domyślna. Następnie dzielimy PATH_INFO na elementy tablicy pomijając pierwszy ukośnik. Efektem jest ładna tablica parametrów, którą możemy wykorzystać w dowolny sposób, pamiętając tylko o tym, który indeks tablicy do czego służy. Zaletą tego rozwiązania jest to, że linki, które widać na początku są poprawnie indeksowane w wyszukiwarkach. Wadą natomiast jest konieczność zachowania porządku w parametrach skryptu. Wada ta jednak dla dobrego programisty jest praktycznie niewidoczna.

Jak bardzo trzeba by przerabiac skrypt mini otwarty by obslugiwal NiceURL bez potrzeby uzywania mod_rewrite, lub jakis inny sposob na przyjazne url'e bez dostepu do .htaccess ?

Z gory dziekuje za pomoc, przyda sie to nie tylko mi, ale i calej rzeszy uzytkownikow skazanych na cała mase znaków zapytania i symboli & w adresach.

Pozdrawiam.

SIKOR

Odnośnik do komentarza
Udostępnij na innych stronach

lepiej będzie chyba tym plikom podać ściężkę bezwzględną do potrzebnych plików:

np.

/usr/home/public_html/

Wtedy nie musisz się bawić w incluidowanie ../../../../../plik.php w zależności od zagnieżdżenia katalogu, co nie?

blog o apple | highlab.pl - blog technologiczny

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