SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Пренасочване на URL според параметър в него

bgkulinar

Меринджей
Имам следния проблем - имам един сайт, в който отделните страници са УРЛ параметри т.е.

http://site.com/?param=page1
http://site.com/?param=page2

и т.н. Сега сайтът сменя УРЛ структрата си и имам нужда да ги пренасоча към съответните им страници. Обаче не мога да измисля как да пренасоча даден параметър към дадена страница. Всичките мога да ги пренасоча към една страница по този начин, но не е това целта на задачата:
Код:
RewriteCond %{QUERY_STRING} ^param=
RewriteRule .* %{REQUEST_URI}? [R=301,L]
Ако някой знае, моля да свирне.

ЕДИТ: Ето го и решението, благодарение много на Шефа и малко на моя скромен мозък:

Как се редиректва УРЛ според параметъра в него. В моя случай от http://site.com/?param=page1 към http://site.com/parvastranica и http://site.com/?param=page2 към http://site.com/vtorastranica:

Код:
RewriteCond %{THE_REQUEST} /(index\.php)?\?param=(.*)\ HTTP/
RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}/%2? [R=301,L]

Redirect permanent /page1 http://site.com/parvastranica
Redirect permanent /page2 http://site.com/vtorastranica
Разбира се, ако стойността на параметъра съвпада с името на страницата приемник т.е. http://site.com/?param=page1 към http://site.com/page1 и http://site.com/?param=page2 към http://site.com/page2, се задоволявате само с гениалността на Шефа (Всевишния здраве да му дава дълги години, а Гугъл - висок ПР и много трафик)

Код:
RewriteCond %{THE_REQUEST} /(index\.php)?\?param=(.*)\ HTTP/
RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}/%2? [R=301,L]
 
Последно редактирано:
Re: Пренасочване на URL според параметър в него

аз понеже не намерих такъв начин с .htaccess и го направих с php

PHP:
if (isset($_GET['id2']))
{
$id= $_GET['id'];
header("Location: file.php?id=$id");
header( "HTTP/1.1 301 Moved Permanently" );
}

имаше същия ефект като с htaccess
преди линковете беха така file.php?id2=312&id=1234
 
Re: Пренасочване на URL според параметър в него

Ако някой знае, моля да свирне.

Да не кажеш после пак, че няма повод да черпиш. :cool:

Код:
RewriteCond %{THE_REQUEST} /\?param=([^&]+)\ HTTP/
RewriteRule ^$ http://www.webmasterbg.org/ [R=301,L]
 
Re: Пренасочване на URL според параметър в него

Да не кажеш после пак, че няма повод да черпиш. :cool:

Код:
RewriteCond %{THE_REQUEST} /\?param=([^&]+)\ HTTP/
RewriteRule ^$ http://www.webmasterbg.org/ [R=301,L]
Ам, да черпя, ама по този начин ми предава параметъра в новото УРЛ, а аз не го ща там.
 
Re: Пренасочване на URL според параметър в него

Аз само ти давам сламката от която да си оплетеш кошницата. Ако трябва да я плета аз бирите ще станат повече. :)
 
Re: Пренасочване на URL според параметър в него

Не каза на къде ще редиректваш :)

http://site.com/?param=page1
към
http://site.com/param_page1.php или?

Ам, да черпя, ама по този начин ми предава параметъра в новото УРЛ, а аз не го ща там.


Доколйото аз разбрах - не иска стария параметър в новото УРЛ. Или както е примера горе param1, го нямам в новия адрес. Доколото аз съм запознат всички да опишеш в htaccessa, или със сцрипт както по горе има пример.
 
Re: Пренасочване на URL според параметър в него

Не каза на къде ще редиректваш :)

http://site.com/?param=page1
към
http://site.com/param_page1.php или?
Примерно така.

Проблемът при редиректа, е че параметърът се предава независимо дали го прихващаш с THE_REQUEST или с QUERY_STRING.
 
Re: Пренасочване на URL според параметър в него

## START ## SEARCH RESULTS REWRITES

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^(.*&)?q=([^&]+)(&.*)?$ [NC]
RewriteRule ^search\.php$ /%2.html? [R=301,L]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^(.+)\.html$ search.php?q=$1 [QSA,L]

## END ## SEARCH RESULTS REWRITES

използвам това за рерайт на сърч. би трябвало да ти помогне. Хубавото на това е че направо ти праща старите УРЛ към новите автоматично, не е нугно да преправяш скрипта ...
 
Re: Пренасочване на URL според параметър в него

Все още не схващам това, което искаш да направиш? Дай ми реален пример, ако може:)

Ако е горното проблема се решава така:
RewriteRule ^/?([^=]+)=(.*) /$1_$2.html? [R=301,L]
 
Re: Пренасочване на URL според параметър в него

Код:
RewriteCond %{THE_REQUEST} /(index\.php)?\?param=(.*)\ HTTP/
RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}/%2? [R=301,L]
 
Re: Пренасочване на URL според параметър в него

Все още не схващам това, което искаш да направиш? Дай ми реален пример, ако може:)
Ами например http://site.com/?param=page1 да се насочи към http://site.com/parvastranica, http://site.com/?param=page2 към http://site.com/vtorastranica и т.н. Но с последния пример на шефа и малко модификация ша станИ.Мдам, цел стек бира ша пиеш. Като сглобя целия модел, ще напиша и цялостното решение.

ЕДИТ: Написах решението на задачката в първия пост.
 
Последно редактирано:
Re: Пренасочване на URL според параметър в него

Как се редиректва УРЛ според параметъра в него. В моя случай от http://site.com/?param=page1 към http://site.com/parvastranica и http://site.com/?param=page2 към http://site.com/vtorastranica:

Код:
RewriteCond %{THE_REQUEST} /(index\.php)?\?param=(.*)\ HTTP/
RewriteRule ^(index\.php)?$ http://%{HTTP_HOST}/%2? [R=301,L]

Redirect permanent /page1 http://site.com/parvastranica
Redirect permanent /page2 http://site.com/vtorastranica
Разбира се, ако стойността на параметъра съвпада с името на страницата приемник т.е. http://site.com/?param=page1 към http://site.com/page1 и http://site.com/?param=page2 към http://site.com/page2, се задоволявате само с гениалността на Шефа (Всевишния здраве да му дава дълги години, а Гугъл - висок ПР и много трафик)


Е, да беше упоменал, че ще редиректваш ограничен брой страници. Има и по-елегантно решение от това да правиш два последователни редиректа. Я разгледай това:

RewriteCond %{THE_REQUEST} /\?param=page1\ HTTP/
RewriteRule ^$ /parvastranica? [R=301,L]
 
Re: Пренасочване на URL според параметър в него

За 5 страници трябва да направя един rewriterule + 5 редиректа по моя начин, a по твоя 5 rewrierul-а. Според теб има ли значение?
 
Re: Пренасочване на URL според параметър в него

е тогава използвай моя вариант...
Твоят вариант ще работи (евентуално), ако слъг-ът на страницата към която се редиректва, съвпада със стойността на параметъра, а моят случай не е такъв.
 
Re: Пренасочване на URL според параметър в него

За 5 страници трябва да направя един rewriterule + 5 редиректа по моя начин, a по твоя 5 rewrierul-а. Според теб има ли значение?

Потребителят трябва да направи две HTTP заявки, т.е. с една повече от необходимото. :)
 
Re: Пренасочване на URL според параметър в него

Твоят вариант ще работи (евентуално), ако слъг-ът на страницата към която се редиректва, съвпада със стойността на параметъра, а моят случай не е такъв.

за редиректа имах преджид само :)
 
Re: Пренасочване на URL според параметър в него

Пробвах всички варианти, но при мен не работи никой, ето го дерзанието ми:

Това:
Код:
http://site.com/search/newest-first.html?searchphrase=exact&searchword=duma

Трябва да пренасочва към това:
Код:
http://site.com/tag/drugaduma

Не успях да го направя, явно някъде бъркам. Ако някой помогне ще черпя
cocktail.gif
 

Горе