2010-04-19 34 views
6

Próbuję zrobić czyste adresy URL, eksplodując $_SERVER['REQUEST_URI'], a następnie przełączając się między wynikami.Przekieruj wszystko na index.php

Jednak, gdy użytkownik wyjdzie poza numer index.php, zakładam, że muszę przekierować go z powrotem do index.php w celu przetworzenia adresu URL, do którego chcą dotrzeć. Jak mogę to zrobić?

Tak na przykład, gdy użytkownik przechodzi do www.domain.com/home/johndoe/... chciałbym index.php (domain.com/index.php) na trafienie tak, że można go przetworzyć /home/johndoe/ poprzez request_uri.

Odpowiedz

19

.htaccess:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?param=$1 [QSA,L] 
+1

@pixel: To jest najczęstszy sposób robienia tego. Jeśli plik lub katalog nie zostanie znaleziony przez Apache, zadzwoni on do wywołania index.php. Teraz możesz uzyskać dostęp do żądanego URI w swoim index.php za pomocą '$ _GET ['param']'. Uwaga: w niektórych konfiguracjach 'RewriteBase /' może powodować problemy. Jeśli tak, po prostu skomentuj go znakiem funta. – webbiedave

+0

Dokładnie tego, czego szukałem. Dzięki! – pixel

2

Można użyć Apache mod_rewrite do mapowania adresów URL na podstawie wyrażeń regularnych, w tym wysyłania wszystko index.php,

+1

Nigdy nie podobały mi się dokumenty apache ... zbyt rozwlekłe, gdy szukasz konkretnej rzeczy – SeanJA

2

Musisz obrazów i innych plików, co pojawi się w index.php.

RewriteEngine On 

Włącza Rewite silnika

RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$ 

Jeśli nazwa pliku nie jest równa JPG, JPEG ... co potrzebne do index.php

RewriteRule ^(.*)$ index.php?q=$1 [QSA] 

"Przekierowanie" na indeksie. php.

w użyciu:

Z PHP $_GETq daje /articles/1987/12/20/Répa's birthday/

Jeśli podzielić zmienną w każdym slash z

list($type, $date_year, $date_month, $date_day, $title) = split('[/-]', $_GET['q']); 

Będziesz dostałem dokładnie to, co chcesz .

+0

Ten warunek przepisywania jest nieco przesadzony i może spowodować problemy, jeśli skończy się zapisywanie plików bez rozszerzeń plików (co z pewnością może się zdarzyć). – SeanJA

Powiązane problemy