Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [regex, apache] znaki specjalne w nawiasach kwadratowych
qBK
post 7.08.2008, 00:36:12
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.01.2007
Skąd: Wrocław

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


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.

Ten post edytował qBK 7.08.2008, 00:38:22
Go to the top of the page
+Quote Post
rzymek01
post 7.08.2008, 10:29:46
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


poczytaj: http://gajdaw.pl/varia/przyjazne-url-mod-rewrite/print.html smile.gif


--------------------
:]
Go to the top of the page
+Quote Post
qBK
post 7.08.2008, 11:43:16
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.01.2007
Skąd: Wrocław

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


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...

Ten post edytował qBK 7.08.2008, 11:46:16
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 01:55