Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [regex, apache] znaki specjalne w nawiasach kwadratowych
Forum PHP.pl > Forum > PHP
qBK
Witam.
Mój problem dotyczy wyrażeń do przepisań w .htaccess. Punktem wyjścia było to, że chcę żeby adresy typu
http://server/jakis_url
przepisywane były do
http://server/plik.php?url=jakis_url

Nie mogę sobie z tym poradzić; na wstępie, problem jest dalej aktualny i jeśli ktoś poda mi jakiegoś nawet bardzo ogólnego i "zbyt wiele akceptującego" regexpa to będę wdzięczny, ale prosiłbym też o wytłumaczenie problemów.
Nawet z takim wyrażeniem (przekierowanie do blank.php żeby zwrócić uwagę na samego regexpa) coś nie działa tak jakbym chciał - jakieś problemy w związku z dwukropkiem:

-----------------------
HTACCESS:
  1. <Files .htaccess>
  2. order allow,deny
  3. deny from all
  4. </Files>
  5.  
  6. RewriteEngine on
  7. RewriteRule ^([A-Za-z0-9/_:-]+)$ /blank.php [L]

-----------------------

http://server/xxxx/aaaaaaaa:bbbbbb -- przekierowuje w porządku
http://server/aaaaaaaa:bbbbbb -- zwraca 403 forbidden

Przed pierwszym dwukropkiem w stringu musi gdzieś wcześniej być slash, inaczej daje 403 (wygląda na jakieś Apache'owe względy bezpieczeństwa? czy jednak coś z wyrażeniem nie w porządku?)

Dalej, chcę żeby kropka w stringu też była dozwolona, ale gdziekolwiek ją dodam w nawiasie kwadratowym (normalnie czy też z backslashem), to po restarcie Apache'a (2.2.6 under Win) mam 500 internal server error :/ Czytałem gdzieś, że takie znaki jak * . ? i inne specjalne w nawiasie kwadratowym tracą na swym 'specjalnym' znaczeniu. Czy może ktoś napisać albo podlinkować jakąś porządną stroną z wyjaśnioną obsługą nawiasów kwadratowych?

Będę wdzięczny za wszelkie podpowiedzi.
rzymek01
poczytaj: http://gajdaw.pl/varia/przyjazne-url-mod-rewrite/print.html smile.gif
qBK
Hmm, no przeczytałem, dzięki - przyda się, ale to dalej nie rozwiązuje mojego problemu. Z samymi regexpami nie mam kłopotów, ale z kropką i dwukropkiem w nawiasie kwadratowym. Kropkę olałem biorąc bardzo ogólne wyrażenie, którego już wcześniej próbowałem, ale nie dawało efektu do końca pożądanego:

RewriteRule ^(.+)$ x.php?id=$1

Dalej są problemy z dwukropkami. http://server/http://www.google.pl dalej jest forbidden.
W sumie to jakby chwilę pomyśleć to dwukropki nie za często występują w URL-ach, są np. w Wikipedii, ale tam też dopiero w subfolderze np. pl.wikipedia.org/wiki/Kategoria:Nauka.
Pozostaje zrobić http://a/b/http://www.google.pl, bo takie coś działa...

Podobnie *, działa ładnie w URL-u 'w podfolderze' (http://a/b/text*text), a http://a/text*text daje 403. Chyba Apache i być może jakieś standardy ISO itd. co do URL-i nakładają jakieś ograniczenia...
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.