Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić taką regułę w .htaccess?
Forum PHP.pl > Forum > Serwery WWW
colargol
Chciałbym, aby po wpisaniu adresu URL:
example.com/7890/page.html
był wczytywany na serwerze plik z katalogu:
/7/8/9/0/page.html

(lub np. /abc/page.html => /a/b/c/page.html)

Jak to zrobić za pomocą mod rewrite i .htaccess?
kilas88
Raczej tego nie zrobisz, ponieważ mod_rewrite działa na zasadzie przepisywania linków, nie ich modyfikacji. Niemniej jednak ciekawe pytanie - jeśli ktoś zna odpowiedź to z chęcią także się dowiem :-)
erix
Jeśli ID jest stałej długości, to powinno zadziałać tak:
[APACHE] pobierz, plaintext
  1. RewriteRule ^([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})/page\.html$ /$1/$2/$3/$4/page.html [L]
[APACHE] pobierz, plaintext
batman
Jeśli ilość znaków jest stała można pokusić się o coś takiego:

RewriteRule ^(.){1}/(.){1}/(.){1}/(.*)\.html$ /$1/$2/$3/$4\.html [L]

Regułkę napisałem bez przetestowania, więc może wymagać drobnej modyfikacji.
kilas88
No właśnie, jeśli liczba znaków jest stała. A co jeśli nie jest stała (ok, można dać znak zapytania w wyrażeniu) lub jeśli przekracza 10 znaków? :-)
batman
Na upartego możesz zrobić tak:

RewriteRule ^(.){1}/(.){1}/(.){1}/(.*)\.html$ /$1/$2/$3/$4\.html [L]
RewriteRule ^(.){1}/(.){1}/(.*)\.html$ /$1/$2/$3\.html [L]
RewriteRule ^(.){1}/(.*)\.html$ /$1/$2\.html [L]

Takie coś pozwoli na "dynamiczne" określenie ilości znaków. Niestety w przypadku większej ilości znaków nie zda to egzaminu i pozostanie jedynie PHP.
erix
~batman, mimo wszystko lepiej jest zawęzić zakres znaków. Kropka wskazuje na dowolny, więc ktoś mógłby tam wstawić slesza i nie ręczę za skutki. Poza tym, w podstawniku nie trzeba escape'ować kropki. winksmiley.jpg
batman
~erix
Zawężenie regułki do konkretnych znaków powinno być wykonane, tutaj nie ma dyskusji. Chciałem jedynie pokazać przykład jak to działa. Co do kropki, to zawsze miałem problem. Dzięki za wyjaśnienie.
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.