Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z mod_rewrite
Forum PHP.pl > Forum > PHP
Plikownik
Witam

Mam taką regułkę w pliku .htaccess :
Kod
RewriteRule ^plik-([0-9]+)-download-([a-zA-Z0-9-]+).html$ index.php?page=download&sub_id=$1&plik=$1&rewritedownplik=$3 [L]


i chcę, aby w miejscu ([a-zA-Z0-9-]+) można było wpisać tekst zawierający kropkę, dopiero zaczynam poznawać mod_rewrite i nie wiem jak zmodyfikować ten fragment, aby obsługiwał też kropki
pawel_
moze tak :?:
Kod
([a-zA-Z0-9-\.]+)
Dex1987
Sprobuj tak

Kod
([a-zA-Z0-9-.]+)


albo tak

Kod
([a-zA-Z0-9-\.]+)


P.S. Chyba nie dales <?php i ?> w pliku htaccess?
Plikownik
Cytat(pawel_ @ 2006-02-18 10:02:39)
moze tak :?:
Kod
([a-zA-Z0-9-\.]+)

też tak próbowałem - wyskoczył mi wtedy błąd serwera
bendi
Cytat(Dex1987 @ 2006-02-18 12:04:50)
Sprobuj tak

Kod
([a-zA-Z0-9-.]+)


albo tak

Kod
([a-zA-Z0-9-\.]+)

Jedno i drugie rozwiązanie jest do kitu winksmiley.jpg

2 rzeczy:
- kropka w klasie znakowej nie jest już znakiem specjalnym i nie zastępuje dowolnego znaku więc wcale nie trzeba dla niej stosować jakiś specjalnych zastosowań
- myślnik "-" jak widać określa zakres znaków np. a-z, więc żeby go użyć w klasie znakowej, trzeba wskazać w jaki sposób chcemy z niego korzystać. W tym przypadku chcemy określić, żeby był odczytywany dosłownie, czyli żeby regułka pozwalała na myślinki w adresie więc musi być \- no chyba, że będzie on na końcu wtedy nie trzeba, ale napewo nie zaszkodzi

Kod
([a-zA-Z0-9\-.]+)


Co do samego mod_rewrite zamiast podawać duże i małe znaki można zastosować flage NC (No Case), która pozwala na wpisywanie dużych i małych liter wtedy regułka się może nieco uprościć
Kod
RewriteRule ([a-z0-9\-.]+) index.php?a=$1 [NC]
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.