Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mod_rewrite + php = niceURL
Forum PHP.pl > Forum > PHP
Vengeance
Szybko i konkretnie:

Takie URLe mają być przerzucone do index.php
http://site.com/
http://site.com/module/
http://site.com/module/action/
http://site.com/module/action/param1/param2/

http://site.com/module
http://site.com/module/action
http://site.com/module/action/param1/param2

*jednak jeśli katalog taki istnieje, rewrite ma przerwac dzialanie

Takie mają nie być obsłużone przez rewrite
http://site.com/costam.txt
http://site.com/skrypt.php?costam=a
http://site.com/a/b/?x=y


Potem w skrypcie odpowiednio to przerobię poprzez SERVER[PATH].

Bardzo tego potrzebuję. Przejrzałem archiwa forum i innych, znalazłem masę rozwiązań ale żadne do końca nie jest tym na czym mi zależy. W jednej z technik (chmola) wypisywał on kolejne katalogi które mają nie być brane pod uwagę.
Mi takie rozwiązanie nie pasuje :/ Próbowałem sam... ale noga jestem w wyrażeniach perla i rewrite. Bardzo serdecznie proszę osoby mogące pomóc o jej udzielenie (pomocy).

Pozdrawiam, wesołych świąt.
Dex1987
Nie wiem czy o to Ci chodzi ale mozesz sprobowac tak:

plik .htaccess
Cytat
RewriteEngine On
RewriteBase /

RewriteRule ^([a-zA-Z0-9_]+)/$                          index.php?param1=$1  [L]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$    index.php?param1=$1&param2=$2  [L]


Nastepnie w pliku index.php mozesz odczytywac zmienne (param1 i param2) jako zmienne $_GET['']. I tu coś takiego:

  1. <?php
  2.  
  3. if (is_dir ($_GET['param1'])) {]
  4.  
  5.  // tu jakaś akcja...
  6. }
  7.  
  8. ?>


Nie wiem czy to rozwiąże Twój problem... opisz dokładniej co chcesz zrobic.

Pozdrawiam dex.
Vengeance
po prostu chce zrobić NiceURLe ale nie wykorzystując do tego mod_rewrite tak jak to ma miejsce zazwyczaj (czyt. w htaccess zapisujemy wszelkie możliwe regułki i odpowiedniki). Nie chce także stosować ForceType opisanego w artykule na php.pl.

Chce każde odniesienie do _nieistniejącego_ pliku/katalogu przekazać plikowi index.php gdzie ten przy pomocy php i danych z $_SERVER postanowi co robimy dalej :]
Dex1987
Chyba sie nie da zrobic NiceURL bez ForceType lub mod_rewrite.
Vengeance
"Chyba sie nie da zrobic NiceURL bez ForceType lub mod_rewrite."

Nie powiedziałem, że _bez_ mod_rewrite. Przecież nawet w temacie jest napisane, że chcę z niego skorzystać! Tylko o ile standardowo przez "zastosuj mod_rewrite" rozumie się przykładowo taki zapis w .htaccess:
Kod
RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ /index.php

RewriteRule ^forum.html$ /index.php?page=forum
RewriteRule ^forum([0-9]*).html$ /index.php?page=forum&what=view_forum&f=$1
RewriteRule ^topic([0-9]*).html$ /index.php?page=forum&what=view_topic&t=$1

RewriteRule ^newsy.html$ /index.php?page=news
RewriteRule ^newsy([0-9]*).html$ /index.php?page=news&p=$1
RewriteRule ^news([0-9]*).html$ /index.php?page=news&what=view&id=$1


To mnie zależy na max. 2/3 regułach RewriteRule/RewriteCond które pozwolą przekazać wszystkie requesty do index.php Z POMINICIEM tych requestów które "zapytują" o istniejące dane (pliki/katalogi)
sobstel
zaraz po RewiteCond On umiesc:

Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


-f jest od plikow, -d od katalogow
Vengeance
sopel: kochany jesteś ;* Wreszcie działa.

Co do tych -f -d to wiedziałem że będzie coś z tym, ale nie mogłem zaczaić jak tego użyć. W manualu mod_rewrite nie podali żadnego przykładu (po prostu nie dawałem tego %REQUEST-FILENAME)
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.