Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
parametr bez parametru htaccess
#1
jak przekierować z
Kod:
.../costam/?wyslano=true
na
Kod:
.../costam/
i przekazać parametry (query_string)

jeżeli przekierowujemy bez [R=301] to adres w przeglądarce nam się nie zmienia ale zmienia się miejsce docelowe i możemy przekazać jakieś query_string (?costam=costam) którego nie widać w adresie

chodzi o to żeby adres się zmienił [R=301] , nie było w nim (?wyslano=true) ale mimo wszystko żeby ten parametr został przekazany (po cichu,pod spodem)
Odpowiedz
#2
Flagi QSA i L powinny załatwić sprawę, nie?
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Odpowiedz
#3
no właśnie kombinuje od 2 godzin i nie moge wykombinować

w normalnej sytuacji np
żeby /wyslano/ przekierować na /costam.php?wyslano=true wystarczą zwykłe QSA i L i adres jest /wyslano/ podczas gdy query_string jest przekazany ( wyslano=true ) i go nie widać w adresie

łatwo się zmienia z /wyslano/ na /costam.php?wyslano=true ale gdy trzeba usunąć parametr to już nie jest tak łatwo
łatwo jest przekształcić coś w coś innego ale żeby coś było a potem żeby tego nie było a mimo to było Smile to już jest trochę ciężej

póki co mam takie 3 linijki
Kod:
1->  RewriteCond %{QUERY_STRING} ^wyslano=true$
2->  RewriteRule ^(.*)$ /$1 [R=301,QSD]
3->  RewriteRule ^(.*)$ /$1?wyslano=true [L]

tylko jak zrobić aby 3 wykonywała się tylko razem z 2 ?
jeżeli 2 sie nie wykona to żeby nie wykonywało też 3
jest jakaś flaga do tego?
Odpowiedz
#4
próbuje też ustawiać zmienne
Kod:
RewriteCond %{QUERY_STRING} ^wyslano=true$
RewriteCond %{ENV:WYSLANO} !true
RewriteRule ^(.*)$ /$1 [R=301,QSD,E=WYSLANO:true]
RewriteCond %{ENV:WYSLANO} true
RewriteRule ^(.*)$ /$1?wyslano=true [L,E=!WYSLANO]
ale też nie działa

nie działa nawet CHAIN
Kod:
RewriteCond %{QUERY_STRING} ^wyslano=true$
RewriteRule ^(.*)$ /$1 [R=301,C]
RewriteRule ^(.*)$ /$1?wyslano=true [L]

zawsze otrzymuje komunikat
Moved Permanently
The document has moved here.
gdzie here to strona z ?wyslano=true (początkowa)
Odpowiedz
#5
Zaraz, ale flaga QSD odrzuca query_string, czyż nie? Nie mam teraz dostępu do serwera z Apachem, jak będę miał, to aż przetestuję.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Odpowiedz
#6
QSD odrzuca , o to właśnie chodziło aby najpierw odrzuciło query_string , przekierowało [R=301] na adres bez query_stringa i dopiero potem przekierowało na adres z query_stringiem ale już bez [R=301] czyli bez zmieniania adresu w przeglądarce

robiłem też tak
Kod:
1-> RewriteCond %{QUERY_STRING} ^wyslano=true$
2-> RewriteRule ^(.*)$ /$1 [C,R=301]
3-> RewriteRule ^(.*)$ /?wyslano=ok [L,R=301]
wszystko działa dobrze jak w 3 jest R=301 a jak usune R=301 to sie już chrzani mimo że teoretycznie nie powinno
wartość wyslano może być dowolna ("ok","true","udalosie") i jest to bez znaczenia byle by tylko była w query_stringu ta zmienna
Odpowiedz
#7
chyba sie nie da tak zrobic w htaccessie
ponieważ gdy chce zmienić adres w przeglądarce muszę użyć flag [R,L] jednocześnie (dla pierwszego RewriteRule),
R-dla przekierowania L-dla natychmiastowego przekierowania
jeżeli po R nie nastąpi L to przekierowanie nie dojdzie do skutku(nie wyczyści nam adresu z query_string) i wykona następną zasadę poniżej i według niej sie zastosuje
a jeżeli L wystąpi to wyczyści nam adres z query_string ale nie wykona już następnej zasady która miałaby tego query_Stringa po cichu dodać (bez przekierowywania R)
zastosowanie flagi L (które jest konieczne do zmiany adresu w pasku przeglądarki) wyklucza dalszą zmianę adresu wyklucza także flagi C oraz N
nie wiem czy się nie mylę ale do tej pory nie udało mi się uzyskać pożądanego efektu
jedyną znaną mi na ten czas metodą na przekazanie parametru ale nie wyświetlanie go w adresie jest POST którego nie da się zastosować bezpośrednio z htaccess ani za pomocą Header('Location: ...');
ma ktoś jakieś pomysły?
Odpowiedz
#8
nawet po przekierowaniu nie ma ustawionego 'HTTP_REFERER' więc nawet gdybym chciał ustawić zmienną środowiskową nie mam podane ostatniej strony aby móc sprawdzić czy adres poprzedniej strony zawierał parametr
mit obalony - nie da sie
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Przekierowanie 301 .htaccess dla całej domeny a dla podstron? hdckredyty 2 3,572 04-10-2012, 00:47
Ostatni post: hdckredyty
  .htaccess xtronix856 17 14,479 21-09-2012, 02:05
Ostatni post: xtronix856
  .htaccess ukrywanie parametrów camelrafal 0 1,931 20-09-2012, 17:12
Ostatni post: camelrafal
  Zmiana linków .htaccess ? Stefan_113 0 1,896 29-08-2012, 16:42
Ostatni post: Stefan_113
  Problem z htaccess lomek 0 1,692 13-05-2012, 22:31
Ostatni post: lomek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl