Forum Sveta kompjutera  

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Serverske aplikacije i baze podataka

Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion...
MySQL, PostgreSQL, MSQL, Oracle...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 7.9.2016, 19:28   #1
dbaja
nikondžija
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.167
Zahvalnice: 47
Zahvaljeno 213 puta na 129 poruka
Određen forumom .htaccess problem

Stari sajt je imao kontakt.php stranu, novi sajt ima anchor unutar uvodne strane #CONTACT gde su kontakt podaci.

Kada pokušam da izvršim redirekciju na ovaj (ili bilo koji drugi način) dobijam internal server error:

RewriteRule /kontakt\.php$ /index.php?lang=sr#CONTACT [NE, L]

Dakle, problem sa znakom "#".
Ima li neko ideju kako da to odradim, ali mora da bude anchor #CONTACT.
Ne mogu da menjam u nešto tipa &id=contact ili slično.

Poslednja ispravka: dbaja (7.9.2016 u 20:29)
dbaja je offline   Odgovor sa citatom ove poruke
Stara 7.9.2016, 21:06   #2
dbaja
nikondžija
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.167
Zahvalnice: 47
Zahvaljeno 213 puta na 129 poruka
Određen forumom Re: .htaccess problem

Nađoh nešto što delimično rešava stvar:


RewriteRule kontakt\.php$ /index.php#CONTACT [R=301,NC,L,NE]

Ali, meni konkretno treba:

kontakt.php?lang=sr -> /index.php?lang=sr#CONTACT
kontakt.php?lang=en -> /index.php?lang=en#CONTACT

E sad, to sa lang parametrom mi je sledećea muka...
dbaja je offline   Odgovor sa citatom ove poruke
Stara 7.9.2016, 22:52   #3
dbaja
nikondžija
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.167
Zahvalnice: 47
Zahvaljeno 213 puta na 129 poruka
Određen forumom Re: .htaccess problem

Kad nema nikoga, mora čovek sam da se lati rešavanja.
Evo, isprobao sam ovako:

RewriteRule ^kontakt\.php$ /index.php#CONTACT [R=301,NC,L,NE]

RewriteRule ^kontakt\.php\?lang\=(sr|en)$ /index.php?lang=$1#CONTACT [NE,R]

---

Međutim, prva redirekcija (bez parametara) radi.
Ali druga varijanta kao rezultat daje pretumbane parametre i ne funkcioniše ispravno:
Dobijem rezultat:

www.domen.co.rs/index.php#CONTACT?lang=sr

NEVEROVATNO, ali nigde ne uspevam da nađem bilo kakve informacije o ovakvim slučajevima.

Poslednja ispravka: dbaja (8.9.2016 u 11:32)
dbaja je offline   Odgovor sa citatom ove poruke
Stara 8.9.2016, 15:15   #4
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 675
Zahvalnice: 107
Zahvaljeno 140 puta na 115 poruka
Određen forumom Re: .htaccess problem

Citat:
dbaja kaže: Pregled poruke
RewriteRule ^kontakt\.php\?lang\=(sr|en)$ /index.php?lang=$1#CONTACT [NE,R]
Ne mozes ovako da pises RewriteRule, jer se ono odnosi samo na deo do pocetka query stringa.
Citat:
Apache mod rewrite dokumentacija kaže:
The Pattern is a regular expression. It is initially (for the first rewrite rule or until a substitution occurs) matched against the URL-path of the incoming request (the part after the hostname but before any question mark indicating the beginning of a query string) or, in per-directory context, against the request's path relative to the directory for which the rule is defined.
Dakle ako hoces da match-ujes query string, moras da koristis:
Kod:
RewriteCond %{QUERY_STRING}
Druga bitna stvar ovde je:
Citat:
By default, the query string is passed through unchanged.
Znaci, ako koristis samo:
Kod:
RewriteRule ^kontakt\.php$ /index.php#CONTACT [NE,R=301]
kontakt.php -> index.php#CONTACT
kontakt.php?lang=sr -> index.php?lang=sr#CONTACT
kontakt.php?lang=en -> index.php?lang=en#CONTACT
kontakt.php?lang=en&foo=bar -> index.php?lang=en&foo=bar#CONTACT

NE (no escape) flag ti treba zbog "#" karaktera.

Poslednja ispravka: Remedy (8.9.2016 u 15:25)
Remedy je offline   Odgovor sa citatom ove poruke
Stara 8.9.2016, 16:54   #5
dbaja
nikondžija
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.167
Zahvalnice: 47
Zahvaljeno 213 puta na 129 poruka
Određen forumom Re: .htaccess problem

Hvala Remedy na objašnjenju, nisam toliko zalazio u detalje, a do sada sam samo url-friendly linkove konvertovao u obične sa ?...&...&... parametrima, pa nisam ni imao priliku da vidim da to tako ne bi radilo.

Evo šta sam uradio i sada mi deluje da je sve ok:

#za slučaj bez parametara
RewriteRule ^kontakt\.php$ /index.php#CONTACT [R=301,NC,L,NE]

#kada ima parametre sr/en
RewriteCond %{REQUEST_URI} /kontakt\.php$
RewriteCond %{QUERY_STRING} ^lang=(sr|en)$
RewriteRule .* http://www.domen.co.rs/index.php?lang=%1#CONTACT [R=301,NE,L]

Probaću ovo što si mi naveo u postu, jednostavnije je i lepše.

Uh, ovo što si naveo daje mi isti onaj čudan rezultat:
http://www.domen.co.rs/index.php#CONTACT?lang=sr
dbaja je offline   Odgovor sa citatom ove poruke
Stara 8.9.2016, 19:02   #6
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 675
Zahvalnice: 107
Zahvaljeno 140 puta na 115 poruka
Određen forumom Re: .htaccess problem

Citat:
dbaja kaže: Pregled poruke
Uh, ovo što si naveo daje mi isti onaj čudan rezultat:
http://www.domen.co.rs/index.php#CONTACT?lang=sr
Tako je, izvini, probao sam na online .htaccess testeru (oni to nisu implementirali kako treba, tj ubacuju query string pre anchora).

Dakle probano na Apache 2.4.7:
Kod:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(lang=(?:sr|en))?$
RewriteRule ^kontakt\.php$ /index.php?%1#CONTACT [NE,R=301]
Daje:
kontakt.php -> index.php?#CONTACT (ali ostaje znak pitanja pre #CONTACT, ne moze samo sa jednim RewriteRule bez toga)
kontakt.php?lang=sr -> index.php?lang=sr#CONTACT
kontakt.php?lang=en -> index.php?lang=en#CONTACT

Samo pazi, ovo ti nece redirektovati npr kontakt.php?foo=bar, ili kontakt.php?lang=en&foo=bar. Ako ti treba jos paramatera u query stringu mora drugaciji regex (vazi i za regex koji si napisao u prethodnom postu).

Poslednja ispravka: Remedy (8.9.2016 u 19:28)
Remedy je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Remedy na korisnoj poruci:
dbaja (8.9.2016)
Stara 8.9.2016, 21:17   #7
dbaja
nikondžija
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.167
Zahvalnice: 47
Zahvaljeno 213 puta na 129 poruka
Određen forumom Re: .htaccess problem

Hvala na odgovoru!

Nema veze što neće odraditi redirekciju u nekom drugom slučaju, ovo sam postavio samo da mi Google Webmaster tool ne bi prijavljivao nepostojeću stranu jer je neko memorisao stari link ka kontakt strani pa ga je nedavno pozvao, a ta strana više ne postoji.

Pozdrav.
dbaja je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Windows 7 64bit mouse problem MiljanX Ostale komponente 3 1.7.2014 14:36
Windows 8.1 i problem sa Nvidiom. Spasavajte! Isko Operativni sistemi 11 8.3.2014 16:44
Problem sa pristupom https vezama Miki2 Operativni sistemi 2 26.8.2013 10:04
Problem HDD Led Sija kao Sumanut (negasi se) King SRB Kvarovi 19 10.7.2013 7:21
Problem sa zvukom - da li je do hardware-a ili nesto drugo? FiresnakE Kvarovi 6 5.3.2010 12:08


Sva vremena su po Griniču +2 h. Sada je 3:19.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2019, vBulletin Solutions, Inc.
Hosted by Beograd.com