Въпрос за преобразуване на един url адрес

mvmrik

Well-Known Member
Имам един проблем, който видях вчера и се чудя как да оправя. Става въпрос за един дизайн. Направен е така, че url адресите са от типа ?id=x#blog. Всичко работи както трябва, като се смени с #contact например се отваря страницата за контакти и т.н. Този дизайн съм го купил и е направен с разни въртящи анимации, та затова е така. Проблемът е в това, че когато добавя даден линк във фейсбук или гугъл+, той се отрязва и вместо ?id=x#blog остава само ?id=x, а после като се натисне линка се отваря началната страница на сайта.

Чудя се как да го оправя. Ясно е, че не мога да накарам гугъл и фейсбук да добавят целия линк, но явно трябва аз да сложа някакво пренасочване. Мен ме интересува само #blog да се показва, когато например има GET на id да речем, но не можах да се сетя как да го направя. Трябва след като се отвори адреса да се рефрешне и да зареди отново правилния. Вижда ми се глупаво, но този дизайн работи само така и не се сещам никакъв друг вариант. Ако се сещате нещо, може да споделите.
 
От: Въпрос за преобразуване на един url адрес

Няма как да го промениш за ФБ, Г, Туитър и т.н. ако ползваш хаштаг в uri-то.
Направи го с нормални пътища, ще загубиш анимацията от onepage темплайта, но като визия ще си остане същото нещо.
Другия вариант е да си направиш един скрипт който да редиректва. Примерно http://domain.com/redirect.php?section=blog&param=x, който да редиректва към http://domain.com/?id=x#blog
 
От: Въпрос за преобразуване на един url адрес

%23

Съобщението,което сте въвели е прекалено кратко.Моля ,въведете съобщение ,което съдържа поне 10 символа
 
От: От: Въпрос за преобразуване на един url адрес

Няма как да го промениш за ФБ, Г, Туитър и т.н. ако ползваш хаштаг в uri-то.
Направи го с нормални пътища, ще загубиш анимацията от onepage темплайта, но като визия ще си остане същото нещо.
Другия вариант е да си направиш един скрипт който да редиректва. Примерно http://domain.com/redirect.php?section=blog¶m=x, който да редиректва към http://domain.com/?id=x#blog
Не е само за анимацията. Дизайна е направен целия в един файл и като се въведе определеното # изкарва страницата като върти с една анимация. Ако го махна се показва само началната страница. Пробвах се и с htaccess но нищо не излезе, не му разбирам много. Сигурно мога да го направя с някакво редиректване на PHP, което да следи за GET id и да презарежда страницата след това, но си мислех че ще има някой по-интелигентен начин.
 
От: Въпрос за преобразуване на един url адрес

%23

Съобщението,което сте въвели е прекалено кратко.Моля ,въведете съобщение ,което съдържа поне 10 символа

Като го заменя с %23 нищо не става.
 
От: Въпрос за преобразуване на един url адрес

Как го добавяш, че се променя линка?
 
От: Въпрос за преобразуване на един url адрес

Така почти работи:
Код:
if (isset($_GET['id'])){
    header('Location: '.$baseUrl.'?id='.$_GET['id'].'#blog');
}
Има ли някакъв начин да се провери за това #blog дали съществува в url адреса, ако има мисля че ще стане. Ако го направя така if (isset($_GET['id'] && !=isset(#blog)) би трябвало да работи. Само на мястото на #blog не знам какво да сложа и дали въобще има такава възможност.
 
От: Въпрос за преобразуване на един url адрес

Промени джаваскрипта да работа с гет параметър, а не с ид в адреса.
 
От: Въпрос за преобразуване на един url адрес

@mvmrik значи не e onepage темплeйт, а ползваш AJAX за зареждане на данни?
Може да се провери само с JS, защото го няма в URI-то - с други думи не се изпраща на сървъра.

Слагай exit; след header който редиректва,защото съм сигурен че не искаш остналата част от кода да се изпълнва.
 
От: Въпрос за преобразуване на един url адрес

Вече си го дооправи както си искаш. Мисля трябва да работи.
PHP:
if (isset($_GET['id'])){
    if(preg_match("/#blog/i" , "$baseUrl".$_SERVER['REQUEST_URI'])){
           header('Location: "$baseUrl"?id='.$_GET['id'].'#blog');
        }
}
 
От: Въпрос за преобразуване на един url адрес

@uni-web ти сериозно ли? Не си на ясно, че anchor-а не се изпраща ан сървъра?
Направи си един php файл с това съдържание:
PHP:
<?php
var_dump($_SERVER['REQUEST_URI']);
?>
след това го извикай като url/file.php?param=value#invisible
 
От: Въпрос за преобразуване на един url адрес

Ти сериозно ли? Имам 13 сайта в които анкора се взема чрез $_SERVER['REQUEST_URI']; Хайде ти си направи фаил и тогава ми говори. Ей сега ще ти дам примерче щото явно не ти се вярва или не си чел достатъчно.

http://uni-web.net/test.php

@uni-web ти сериозно ли? Не си на ясно, че anchor-а не се изпраща ан сървъра?
Направи си един php файл с това съдържание:
PHP:
<?php
var_dump($_SERVER['REQUEST_URI']);
?>
след това го извикай като url/file.php?param=value#invisible
 
От: Въпрос за преобразуване на един url адрес

с джабаскрипт на онлоуд няма ли да стане
 
От: Въпрос за преобразуване на един url адрес

Ето ти най-простия код, ако искаш и цели класове мога да ти постна и функции за сигорност и какво ли още не и за кирилица и за латиница.

PHP:
<?php

          echo"anchor-а e: ".$_SERVER['REQUEST_URI']."";
?>
 
От: Въпрос за преобразуване на един url адрес

за социалките си добави нещо дето приемат - от там се оправяй с .htaccess рулове...
 
От: Въпрос за преобразуване на един url адрес

Както каза амитрев, това няма да работи, защото ури няма да вземе #blog.

Вече си го дооправи както си искаш. Мисля трябва да работи.
PHP:
if (isset($_GET['id'])){
    if(preg_match("/#blog/i" , "$baseUrl".$_SERVER['REQUEST_URI'])){
           header('Location: "$baseUrl"?id='.$_GET['id'].'#blog');
        }
}
 
От: Въпрос за преобразуване на един url адрес

@uni-web и 13000 сайта да имаш няма как да промениш реалността.
http://uni-web.net/test.php#hash връща: anchor-а e: /test.php

С други думи твоят прост пример твърди, че грешиш. Явно си чел недочел.
 
От: Въпрос за преобразуване на един url адрес

Ти сериозно ли? Имам 13 сайта в които анкора се взема чрез $_SERVER['REQUEST_URI']; Хайде ти си направи фаил и тогава ми говори. Ей сега ще ти дам примерче щото явно не ти се вярва или не си чел достатъчно.
http://uni-web.net/test.php?param=value#invisible
http://uni-web.net/test.php

anchor-а e: /test.php?param=value

Уни-леб чети
/t.php?param=value#invisible
 
От: Въпрос за преобразуване на един url адрес

Ми много ясно че това ще върне нали в кода е зададено: $_SERVER['REQUEST_URI']
@uni-web и 13000 сайта да имаш няма как да промениш реалността.
http://uni-web.net/test.php#hash връща: anchor-а e: /test.php

С други думи твоят прост пример твърди, че грешиш. Явно си чел недочел.
 
От: Въпрос за преобразуване на един url адрес

Ма никой май не ми зачете коментара... ми мъчете се :)
 

Горе