Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [.htaccess] Nazwa pliku bez .php w adresie, pobieranie nazwy pliku przy dużej liczbie plików.
Wozzi
post 1.11.2011, 21:45:51
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.02.2011

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


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

Ten post edytował Wozzi 1.11.2011, 21:47:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
by_ikar
post 1.11.2011, 22:12:27
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


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>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:30