Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zrobić taką regułę w .htaccess?
colargol
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 24.02.2009

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
kilas88
post
Post #2





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

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


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 :-)
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
kilas88
post
Post #5





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

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


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? :-)

Ten post edytował kilas88 5.08.2010, 13:51:09
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~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. (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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

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

 



RSS Aktualny czas: 24.08.2025 - 20:40