Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie dotyczace "przyjaznych urli"
Forum PHP.pl > Forum > Serwery WWW > Apache
Aiker
A wiec chcialem sie dowiedziec jak skonfigurowac apache aby przyjmowal on takie urle jak sa opisane w artykule na php.pl :?:
Paul
do tego nie trzeba konfuguracji apache'a...

jedynie htaccess (to jest tam opisane) jezeli nie chcesz miec widocznego rozszerzenia...

w wypadku mod_rewrite to co innego...
Wankster
Spróbuj z tą: http://httpd.apache.org/docs-2.0/mod/core....#acceptpathinfo
Aiker
HTACCESS:
Kod
<Files "test.php">

Options +Includes

SetOutputFilter INCLUDES

AcceptPathInfo On

</Files>

Mam w tym samym katalogu test.php i htaccess
Zrobilem tak jak tam pisalo wsadzielm to do htaccessa ale nic z tego nadal niedziala. Niewiem dlaczego pomozcie :?:
scanner
A jak wygląda Twój URL i zym se objawia jego niedziałanie?
Aiker
Juz mowie mam w pliku test.php odczytywanie zmiennej globalnej PATH_INFO natomiast jak wpisze np taki adres http://localhost/test.php/wartosc1/wartosc2/wartosc3 to wyswietla mi komunikat
Kod
No input file specified.

natomiast jezeli wpisze normalna sciezke do pliku to zmienna PATH_INFO wyswietla mi /test.php
scanner
A jak wygląda to, jełśi usuniesz .htaccess i zostanie tylko test.php ?
Aiker
wyglada tak samo
scanner
To zaczyna przypominać czata...

Poniżej prosże napisąć posta, w którym znajdzię się:
- wersja serwera
- system operacyjny
- wersja php
- wyszczegolnienie jakie kombinacje próbowałeś i jakie były tego efekty.
- jeśki serwer inny niż localhost, podaj adres.
- podaj kod skryptów, jakie sprawiają problem.

Posty powyzej zostaną następnie usunięte, a Ty nucz się pisać konkretne i zawierające wszystkie niezbędne informacje pytania.
splatch
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ąć 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 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>.
Aiker
Juz wiem z czym mam chyba problem apache wogule mi nie czyta .htaccess
Probowalem w pliku konfiugracyjnym apach cos zmienaic ale nic z tego
Pomozcie
Mam Win Xp Apache 2.049 php 4.3.4
splatch
Cytat
Juz wiem z czym mam chyba problem apache wogule mi nie czyta .htaccess
Probowalem w pliku konfiugracyjnym apach cos zmienaic ale nic z tego
Pomozcie
Mam Win Xp Apache 2.049 php 4.3.4


Znajdź i odkomentuj linię
Kod
AccessFileName .htaccess
Aiker
Problem w tym ze ona byla odkomentowana. Tez o tym myslalem ale nic z tego
FiDO
A masz ustawione odpowiednie AllowOverride questionmark.gif? Pewnie nie...

Poczytaj moze to: http://httpd.apache.org/docs-2.0/howto/htaccess.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.