![]() |
![]() |
|
Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion... MySQL, PostgreSQL, MSQL, Oracle... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#1 |
Veteran
Član od: 4.12.2005.
Poruke: 1.180
Zahvalnice: 50
Zahvaljeno 214 puta na 130 poruka
|
![]()
Drugari, hteo bih da mi se kada neko unese adresu:
primer.com/en to pomoću RewriteRule u .httaccessu transformiše u: primer.com/index.php?lang=en ali da se u Address baru i dalje vidi baš https://www.primer.com/en a ne https://www.primer.com/index..php?lang=en kao što se desi komandom RewriteRule ^en$ /index.php?lang=en [L] ima li ko da može pomoći? |
![]() |
![]() |
![]() |
#2 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.303
Zahvalnice: 94
Zahvaljeno 3.312 puta na 1.997 poruka
|
![]()
TL;DR Znam, udavih ali ovo je često predmet konfuzije pa bih da objasnim kad sam već ovde
![]() Prepisivanje (rewrite) URL-ova pomoću mod_rewrite modula ima dva režima rada: lokalni i eksterni. Podrazumevano se koristi lokalni ukoliko se eksplicitno ne zahteva eksterni. Kada se koristi lokalni režim, kompletan proces "prepisivanja" URL-a se vrši na serveru i browser kao odgovor dobija traženi resurs bez ikakvih dodatnih instrukcija servera gde bi browser stvarno trebalo da potraži traženi resurs pa se tako u lokalnom režimu ne menja adresa browsera. Primer lokalnog prepisivanja bi upravo bio tvoj kod. Kod:
# .htaccess RewriteEngine On RewriteRule ^en$ /index_r.php?lang=en [L] PHP kod:
![]() Sa druge strane, kod eksterne redirekcije server nakon prijema zahteva browsera, detektuje i obrađuje prepisivanje URL-ova ali u odgovoru umesto traženog resursa šalje "prepisani" URL koji služi kao putokaz browseru gde da nađe resurs koji je originalno tražio. Kod eksterne redirekcije promena adrese u browseru je uvek vidljiva. Eksterna redirekcija mora da se zahteva eksplicitno dodavanjem R Apache flaga na kraju RewriteRule direktive pri čemu se ako se ne navede HTTP kod podrazumeva 302 Found. Kod:
# .htaccess RewriteEngine On RewriteRule ^en$ /index_r.php?lang=en [L,R] ![]() Eksterna redirekcija se često koristi sa eksplicitnim navođenjem 301 Moved Permanently status koda kako bi se pretraživačima naznačilo da je stranica koja se nalazi u indeksu premeštena na drugu lokaciju i time očuvao status u indeksu. Kod:
# .htaccess RewriteEngine On RewriteRule ^en$ /index_r.php?lang=en [L,R=301] ![]() Dakle, u ovom slučaju prva opcija je sasvim ispravna i da ne bi došlo do prepisivanja potrebno je korisiti sledeći kod. Kod:
RewriteEngine On RewriteRule ^en$ /index.php?lang=en [L] To znači da ako je u bilo kom trenutku korišćena eksterna redirekcija prilikom razvoja (R flag u .htaccess) browser je zapamtio taj par i neće ni pokušavati da kontaktira server već će odmah tražiti "redirektovani" resurs. U takvim slučajevima najpametnije je raditi razvoj sa isključenim keširanjem u DevTools konzoli (Network / Disable cache). Poslednja ispravka: Neutrino (18.2.2022 u 0:22) |
![]() |
![]() |
![]() |
#3 |
Veteran
Član od: 4.12.2005.
Poruke: 1.180
Zahvalnice: 50
Zahvaljeno 214 puta na 130 poruka
|
![]()
Hvala na informativnom odgovoru, ali imam problem da iako koristim baš taj metod u .htaccess fajlu:
RewriteRule ^en$ /index.php?lang=en [L] međutim, na neki volšeban način, parametar lang=en se uopšte ne prenese, ignoriše ga. A kada stavim RewriteRule ^en$ /index.php?lang=en [L,R=301] onda ga uredno prenese ali jbg, dobijem URL koji sadrži to što neću da se tako vidi (...index.php?lang=en). |
![]() |
![]() |
![]() |
#4 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.303
Zahvalnice: 94
Zahvaljeno 3.312 puta na 1.997 poruka
|
![]()
Prepisivanje (rewrite) obuhvata samo path deo URL-a tj. sadržaj URL-a do znaka ? koji indikuje početak tzv. query stringa.
Ukoliko želiš da i query string bude obuhvaćen prepisivanjem onda moraš da navedeš QSA Apache flag. Kod:
# .htaccess RewriteEngine On RewriteRule ^en$ /index.php?lang=en [L,QSA] Kod:
LogLevel debug rewrite:trace6 Poslednja ispravka: Neutrino (18.2.2022 u 0:24) |
![]() |
![]() |
Sledećih 5 korisnika se zahvaljuje korisniku Neutrino na korisnoj poruci: | ||
Aleksandar Djurovic (17.2.2022), dbaja (17.2.2022), makiem (17.2.2022), Relja (4.5.2022), Remedy (8.3.2022) |
![]() |
#5 |
Veteran
Član od: 4.12.2005.
Poruke: 1.180
Zahvalnice: 50
Zahvaljeno 214 puta na 130 poruka
|
![]()
E, da, sa QSA ide sve kako treba. Hvala!
|
![]() |
![]() |
![]() |
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
![]() |
||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Problemi, problemi | JerrySRB | Kvarovi | 3 | 11.8.2015 13:10 |
problemi i samo problemi dokle... | lemson | Kvarovi | 13 | 18.1.2013 22:31 |
Podesavanje .htaccess fajla | Miki2 | Web razvoj | 1 | 6.11.2011 17:56 |
Problemi sa kompjuterom se nastavljaju | youngster | Kvarovi | 1 | 10.7.2010 22:10 |
Problemi, problemi i samo problemi | dume | Slobodni softver | 24 | 28.12.2008 15:51 |