Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie dotyczace "przyjaznych urli"
Aiker
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 9.09.2003
Skąd: K-ce

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


A wiec chcialem sie dowiedziec jak skonfigurowac apache aby przyjmowal on takie urle jak sa opisane w artykule na php.pl :?:
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
splatch
post
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Oto całość kodu, który znajduje się w pliku .htaccess. Pierwsza linia włącza moduł rewrite (musi on być wcześniej załadowany). Linia druga określa 'bazę', czyli początek adresu url. W tym przypadku, że plik news leży w katalogu głównym jest to tylko '/'. Należy pamiętać że dyrektywa RewriteBase tyczy się tylko pierwszej części wzoru, a nie obydwu. W drugiej części trzeba podać całość.
Kod
RewriteEngine On

RewriteBase /

RewriteRule ^news/(.*?)$ /news?id=$1



# tutaj zbędne dyrektywy - wycięte :)



<Files news>

    ForceType application/x-httpd-php

</Files>

Dyrektywa <Files news> powoduje, że plik news jest traktowany jako plik php. Jeśli tego nie będzie nie da rady za pomocą php tego wyciągnąć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Teraz część skryptowa.
[php:1:e4735bf198]<?php
$dane = str_replace( $_SERVER['PATH_INFO'] .'/', '', $_SERVER['REQUEST_URI'] ); // obcinamy pierwszy slash

if( strstr( $dane, '/') )
{
$tablica = explode( '/', $dane );
for( $x = 0; $x < sizeof( $tablica ); $x++ )
{
$_URL[ $tablica[ $x ] ] = $tablica[ $x+1 ];
$x++;
}
for( $x = 0; $x < sizeof( $tablica ); $x++ )
{
$_URL[ $x ] = $tablica[ $x ];
}
}
else
{
$_URL = $dane;
}
var_dump( $_URL );
?> [/php:1:e4735bf198]
Pierwsza pętla for powoduje, że adres zapisany w postaci news/id/341/language/pl jest przekształcany w tablicę asocjacyjną o struktórze
Kod
    'id' => '341'

    'language' => 'pl'

Druga pętła tworzy tablicę z kluczami numerycznymi o struktórze
Kod
    0 => 'id'

    1 => '341'

    2 => 'language'

    3 => 'pl'

Jeśli adres jest prosty - w postaci news/341 to zmienna $_URL przyjmuje wartość 341.

Całość adresu url po pierwszym slash'u jest zawarta w tablicy $_GET - na przykład dla wcześniejszej konfiguracji może ona wyglądać tak:
Kod
$_GET["id"] id/341/language/pl

Mam nadzieję, że komuś pomogłem/pomogę nie tylko sobie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Jeśli są jakieś pytania to piszcie najlepiej na mail'a, postaram się odpowiedzieć bo załapałem o co chodzi <splatch@desk.pl>.
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 21:59