Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> RewriteRule pozwala na /////// w adresach
radvanced
post 5.06.2013, 20:43:14
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 16.08.2010

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


Witam,
dzisiaj rozpocząłem nierówną walkę z mod_rewrite.
Ogarnąłem podstawy wyrażeń regularnych i zasady tworzenia RewriteRule.

Wstęp:
tworzę stronę w php z adresami o takim wzorcu /index.php?lang=en&id=articleid

Chcę do tego stworzyć proste adresy. Dopuszczam taką ich konstrukcję:
www.strona.pl/en/article <- dla strony w innym języku niż domyślny (pl)
www.strona.pl/article <- dla stron w języku polskim - domyślnym

Napisałem dwie reguły
CODE
RewriteRule ^(en|fr|de){1}\/([a-zA-Z-]{3,10})(\.html)?$ index.php?lang=$1&id=$2 [L]

RewriteRule ^([a-zA-Z-]{3,10})(\.html)?$ index.php?id=$1 [L]


Pierwsza ma sprawdzać czy sprecyzowano język i czy jest nazwa artykulu. rozszerzenie .html może wystąpić
Druga reguła tworzy link gdy nie sprecyzowano wersji językowej.


Problem:

Przetestowałem te reguły z pomocą http://www.regexp.pl/ i jest ok ale po wrzuceniu tego na serwer przegladarka pozwala rowniez na takie zapisy:
http://www.strona.pl////en///artykul.html
http://www.strona.pl///////artykul.html


Co zrobiłem żle?

Pozdrawiam i dziekuje za sugestie
Go to the top of the page
+Quote Post
Talidali
post 6.06.2013, 09:11:10
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 19
Dołączył: 31.05.2013

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


Czemu źle od razu? Przecież działa jak należy.

Zobacz sobie smile.gif
http://forum.php.pl///////index.php?showto...p;#entry1049289

Jak chcesz to kontrolować to użyj routingu i przekieruj wszystkie żądania na index.php i tam weryfikuj co jest wpisane w adresie.


--------------------
Szukam pracy za granicą jako FrontendDeveloper - AKTUALNE

forum.php.pl/PoszukujePraca_Frontend_Developer_t218107.html
Go to the top of the page
+Quote Post
radvanced
post 6.06.2013, 10:03:38
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 16.08.2010

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


Chciałbym zrozumieć dlaczego jest możliwe en////article.html dla wyrażenia regularnego
^(en|fr|de){1}\/([a-zA-Z-]{3,10})(\.html)?$
jeśli to wyrażenie zwraca "false" dla powyższego ciągu.


Czyli dzieje się to poza .htaccess tak?

A jaka jest idea routingu? każde wywołanie przekazywane jest na index.php i tam sprawdzane?

W każdym razie dzieki.
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: 15.05.2024 - 04:28