Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> htaccess QSA i .*
metal
post 16.07.2010, 15:29:51
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 1.02.2007
Skąd: Sanok

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


Witam,

Robie strone wielojezyczna z przyjaznymi linkami. Linki beda zawierac rozne znaki np. cyrylice.

Zrobilem sobie htaccessa ale wywala mi blad internal serwer error 500:

  1. RewriteRule ^(.*)[\/]{0,1}$ index.php?zmienna=$1 [L,QSA,NC]


Blad jest gdy uzyje .* wraz z QSA. Pojawia sie na serwerze home.pl Niestety nie mam podgladu logow zeby sprawdzic o co kaman.

Sprawdzilem tez tego htaccessa na ovhost i stronka sie odpala ale nie laduja sie zadne pliki graficzne, style, js'y.

Jak mozna zastapic .* aby regula dzialala dla dowolnego ciagu znakow?


Spróbowalem jeszcze jednej opcji:

  1. RewriteRule ^([a-zA-Z0-9-_%)[\/]{0,1}$ index.php?module=$1 [L,QSA,NC]


URLe zapisuje w postaci %D0%9E-%D1%84%D0%B8%D1%80%D0%BC%D0%B5

Wszystko by bylo ok ale jak wywoluje dany url to wyswiwtla sie komunikat:

  1. Not Found
  2.  
  3. The requested URL /О-фирПо was not found on this server.


Zamienia link na jakies krzaczory ;/

Jak wpisze url bez htaccessa /index.php?module=%D0%9E-%D1%84%D0%B8%D1%80%D0%BC%D0%B5
dziala ok takze to cos musi byc w htaccessie nie wiem czy jakies kodowanie trzeba ustaic dla lpiku htaccess czy
dodac jakies flagi?

Ta cyrylica mnie wykonczy... ;/

Ten post edytował metal 16.07.2010, 17:47:43


--------------------
zmodyfikowano - waga
Go to the top of the page
+Quote Post
erix
post 16.07.2010, 18:34:04
Post #2





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




Cytat
Sprawdzilem tez tego htaccessa na ovhost i stronka sie odpala ale nie laduja sie zadne pliki graficzne, style, js'y.

Problem tkwi już w konstrukcji strony, vide: http://eriz.pcinside.pl/weblog/mod_rewrite...wiazac-208.html

Cytat
Jak wpisze url bez htaccessa /index.php?module=%D0%9E-%D1%84%D0%B8%D1%80%D0%BC%D0%B5
dziala ok takze to cos musi byc w htaccessie nie wiem czy jakies kodowanie trzeba ustaic dla lpiku htaccess czy
dodac jakies flagi?

Ta cyrylica mnie wykonczy... ;/

IMHO trochę przekombinowałeś z regułkami, home.pl ma coś z tym Rewritem zjechane (zresztą, nie tylko Rewrite, ale nie to jest tematem dyskusji), spróbuj najpierw tego:
[APACHE] pobierz, plaintext
  1. RewriteRule ^(.*?)$ index.php?module=$1 [L,QSA]
[APACHE] pobierz, plaintext

A flagę NC omiń, Rewrite lubi się żreć z wyrażeniami regularnymi operującymi na znakach narodowych, więc lepiej to powierzyć skryptowi.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
metal
post 16.07.2010, 18:45:55
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 1.02.2007
Skąd: Sanok

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


Pogooglowalem troche i znalazlem przyklad ktory dostosowalem do swoich potrzeb i zadzialalo party.gif

RewriteRule ^([^.]+)[\/]{0,1}$ index.php?module=$1 [L,QSA,NC]

Tylko troche nie rozumie tego zapisu dry.gif

Jestem slaby z wyrazen regularnych nie wiem po co przed . znak ^ (bez tego nie dziala)

Moze mi ktos wytlumaczyc ten zapis?


--------------------
zmodyfikowano - waga
Go to the top of the page
+Quote Post
erix
post 16.07.2010, 18:51:27
Post #4





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




Hmm, daszek na początku neguje całą klasę znaków, czyli uwzględnij wszystkie inne oprócz podanych. Kropka oznacza dowolny znak, czyli - na zdrowy chłopski rozum - uwzględnij tylko zbiór pusty.

Przyznam szczerze, że mnie ta konstrukcja trochę dziwi, bo logicznie... nie ma sensu? (przynajmniej dla mnie)


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zegarek84
post 17.07.2010, 11:21:32
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


w zbiorze znaków [] to czy dany znak trzeba poprzedzić slashem zależy od kolejności wpisywania tam i znaczenia - już to miałem pisać ale w pierw wolałem znaleźć jakieś źródło na potwierdzenie tego (drugi wynik na "wyrażenia regularne")
http://www.egrafik.pl/kurs-regex-wyrazenia-regularne/
Cytat
Notka: Większość znaków specjalnych zawartych w zbiorze znaków jest automatycznie kapsułkowane do ich znaczenia dosłownego. Np. /[.]/ pasuje do . a nie do wszystkich znaków oprócz końca linii.

jednak ja dla pewności prawie zawsze poprzedzam znaki specjalne slashem choć nie zawsze - i co język zdarzają się drobne niuanse w wyrażeniach regularnych

nie chce mi się sprawdzać ale dla mnie regułka:
RewriteRule ^([^.]+)[\/]{0,1}$ index.php?module=$1 [L,QSA,NC]
znaczy tyle - całość do pierwszej kropki lub jak jej nie będzie to do końca... i dalej dla mnie bez sensu jest zapis [\/]{0,1} gdyż ze względu na zachłanność zostanie wchłonięte przez pierwszy człon a zgodnie z definicją nie musi wystąpić ( wyrażenie [\/]{0,1} jest równoznaczne [\/]? )


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

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: 14.08.2025 - 12:47