Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [.htaccess] Nazwa pliku bez .php w adresie
Forum PHP.pl > Forum > Serwery WWW > Apache
Wozzi
Witam

Mam problem z napisaniem mod_rewrite. Tworzę serwis, który składa się z dużej ilości plików .php a chciał bym utworzyć przyjazne linki by nie było np.:
Kod
index.php?co=informacje&typ=techniczne

tylko
Kod
index/informacje/techniczne/


Problem w tym że przeszukałem kilka for, poradników i nie znalazłem rozwiązania mojego problemu.

Chodzi mi dokładniej o:
Mam do dyspozycji przypuśćmy 30 plików: a.php, b.php, c.php i tak dalej
Wszystkie te pliki mają tak samo zdefiniowane GET np.: a.php?co=cos1&typ=cos2
Próbowałem napisać to na różne sposoby np.:
Kod
RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/$ $1.php?co=$2&typ=$3 [L]

Gdzie z nazwę pliku pobiera przed pierwszego slash'a.
Jak mi się udało to pobierało razem z .php a jak usunąłem .php to w ogóle nie wczytywało plików.

Może trochę to kijowo wytłumaczyłem. Jak bym miał pisać mod_rewrite dla każdego pliku to plik .htaccess miał by powyżej 1000 linijek kodu
by_ikar
Cytat
Może trochę to kijowo wytłumaczyłem. Jak bym miał pisać mod_rewrite dla każdego pliku to plik .htaccess miał by powyżej 1000 linijek kodu


Dlatego używa się routerów, gdzie niekiedy można zdefiniować jakąś taką uniwersalną regułę.

Twoja reguła u mnie działa, w sensie działa dla takiego przykładu:

Kod
http://localhost/test/raz/dwa/


a plik test.php który zawiera:

Kod
<?php

var_dump($_GET);


zwraca coś takiego:

Kod
array
  'co' => string 'raz' (length=3)
  'typ' => string 'dwa' (length=3)


Także działa jak najbardziej poprawnie. Nie mniej twoją regułkę, zastąpił bym taką:

Kod
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/$ $1.php?co=$2&typ=$3 [NC,L]


A cały htaccess wygląda u mnie tak:

Kod
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/$ $1.php?co=$2&typ=$3 [NC,L]
</IfModule>
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.