![]() |
![]() |
![]()
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 :?:
|
|
|
![]() |
![]()
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>. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 21:59 |