Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess] Znak zapytania w przekierowaniu
Forum PHP.pl > Forum > Przedszkole
php11
Cześć,


W htaccess chcę przekierować wszystkie adresy z frazą com_content na nowy adres.
Mam taką regułkę:

  1. RewriteRule ^(.*)com_content(.*) /nowy-adres [L,R=301]


Działa, o ile w adresie nie ma znaku ?

Np. tego: index.php?option=com_content już nie przekieruje


Poradzicie?
Z góry dzięki
Johnas
miałem ten sam problem... zamiast znaku zapytania w adresie musisz wpisać "%3F"

Zobacz temat:
http://forum.php.pl/index.php?showtopic=247719

@Edit:
Nie doczytałem do końca, tego nie zmieni ponieważ tutaj masz już dwie zmienne

  1. RewriteRule ^(.*)/(.*)$ index.php?$1=$2

sprawi że adres będzie teraz www.example.com/option/com_content

Zamieszczam grafikę dla wzorca:


W htaccesie używaj znaków które mają być dozwolone w adresie url, gdyż będzie to dodatkowym zabezpieczeniem przed atakami na stronę
php11
Niestety rozwiązanie nie działa.
Jak przekierować w htaccess adresy ze znakiem zapytania?


RewriteRule ^(.*)com_content(.*) /nowy-adres [L,R=301]


Działa, o ile w adresie nie ma znaku ?

Np. tego: index.php?option=com_content już nie przekieruje

nospor
Bo znak zapytania w URL oddziela jedna czesc URL od innej, tzw query.

Trzeba wiec inaczej kombinowac
https://simonecarletti.com/blog/2009/01/apa...ring-redirects/
https://simonecarletti.com/blog/2009/01/apa...d-query-string/
php11
Dzięki za odpowiedź.


Mam zacząć od?

RewriteCond %{QUERY_STRING} ^com_content$
nospor
Na stronie masz podane jak masz to zrobic. Moim zdaniem przyklady sa dosc lopatologiczne

zas co do samego
^com_content$
to niby co wg. ciebie to oznacza? Bo zdaje sie mowiles, ze twoje query string wyglada tak:
option=com_content

a regulce mowisz ze wyglada tak
com_content
wiec sie zdecyduj
php11
Za moich czasów nie uczyło się angielskiego...

Już wiem, że to nie działa:

RewriteCond %{QUERY_STRING} ^option=com_content$
RewriteRule ^(.*)option=com_content(.*)$ /nowy-adres [L,R=301]
nospor
Twoje czasy sa rowniez i teraz i teraz jakos ludzie sie ucza.

I mowiac, ze przyklady sa dosc lopatologiczne mialem na mysli PRZYKLADY a nie text. Przyklady nie sa po angielsku.

np. to
RewriteRule ^(.*)$ http://example.site/page/%1.pdf [R=302,L]

czyli on juz nie sprawdza adresu tylko leci po wszystkim, wiec u ciebie analogicznie ma byc bo przeciez w adresie nie masz juz com_content co zdaje sie juz ci wyjasnialem.... po polsku.... tongue.gif

RewriteCond %{QUERY_STRING} ^option=com_content$
RewriteRule ^(.*)$ /nowy-adres [L,R=301]

albo zeby bylo w ogole uniwersalnie to:
RewriteCond %{QUERY_STRING} ^.*com_content.*$
RewriteRule ^(.*)$ /nowy-adres [L,R=301]
Pyton_000
To sobie na rosyjski przetłumacz jak angielskiego nie umiesz...
php11
Cytat(nospor @ 26.01.2018, 10:55:26 ) *
RewriteCond %{QUERY_STRING} ^.*com_content.*$
RewriteRule ^(.*)$ /nowy-adres [L,R=301]



Nie daję rady, pełny adres jest taki:

domena.pl/index.php?option=com_content&task=blogcategory&id=60&Itemid=99999
trueblue
Na jaki URL ma być przekierowanie z tego adresu?
php11
Dowolny adres, który zawiera "com_content" na /nowy-adres

Dzięki
trueblue
Kod
RewriteCond %{QUERY_STRING} option=com_content
RewriteRule .* /nowy-adres?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.