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

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

@uni-web спри за 10 минути. Помисли и пак се включи, защото или си шизофреник или просто си пишеш ей така да има постове.
 
От: Въпрос за преобразуване на един url адрес

Ма сега загрях, ама направо се спуках от смях от кога ето виж всеки може да си го дооправи това е от хоста защото нямам енкодинг включен ето виж си го сега през целия ми скрипт дали има проблем. ;) http://younotepad.com/поздрав-за-разбирачите-от-форума-admin-shared-16056.html
@uni-web и 13000 сайта да имаш няма как да промениш реалността.
http://uni-web.net/test.php#hash връща: anchor-а e: /test.php

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

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

Естествено, че няма да стане. Причината е само една - БРАУЗЕРА!
Ако адреса се подаде по друг начин, не през браузер, вероятно няма да има проблем, но браузера си е запазил хеш-тага за собствени нужди и когато изпълнява заявката въобще не го предава на сървара.
Ето дебъг на заявката:
Mozilla Firefox_2015-03-19_16-22-08.png
 
От: Въпрос за преобразуване на един url адрес

Разбира се, че е това @madseason колко пъти трябва да се напише тук.
Oт 2012 (ако някой му се рови може да провери за по точно) ФБ реши да игнорира #anchor-params от адресите коитос е пускат в мрежата им. Преди това domain.com/blog#post-35 и domain.com/blog бяха за него различни адреси.

@uni-web пак не ти разбирам. Какви енкодинги, като става дума за котва.
 
От: Въпрос за преобразуване на един url адрес

вземане на стойността след #

var url = "http://www.test.com/?id=x#blog";
var hash = url.substring(url.indexOf('#')+1);
console.log( hash );

//--------------------------


Редиректване с нов #

var novHash = "blog555";
window.location="http://www.alabala.com#novHash";
 
От: Въпрос за преобразуване на един url адрес

А вместо да се занимаваш с глупости защо не ги пускаш през bit.ly или goo.gl? -> http://bit.ly/1FFc27k
На мен ми е все едно, аз даже не знам дали ще пускам сам тези линкове. Всичко е заради бутоните за споделяне, от които някой може да сподели и след това ще се получи невалиден линк.

Опитах с javascript, но не го разбирам и нищо не направих. Пробвах с htaccess, но и там нищо не стана. Uni - твоя код също не става, защото не отчита анкора, както ти писаха. Не го знаех това до днес, че той не може да се вземе по нормален начин с PHP и мислех, че ще е нещо елементарно, но се оказа че не е точно така. В крайна сметка успях да подкарам нещата с едно елементарно добавяне на нов параметър share, който се очаква да се използва само за споделените линкове.

В този си вид работи:
Код:
if (isset($_GET['id']) && isset($_GET['share'])){
    header('Location: '.$baseUrl.'?id='.$_GET['id'].'#blog');
    exit;    
}

Така работи без проблем. Просто в бутоните за споделяне към фейсбук и гугъл+ ще сложа такъв линк: site.com?id=1&share
 
От: Въпрос за преобразуване на един url адрес

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

@mvmrik написах ти го много отдавна как да стане. На самите бутони задаваш път до някакъв php скрипт, който според GET параметрите редиректва където искаш.
JS няма да ти реши проблема ако не промениш изцяло логиката на сайта ти, защото ФБ игнорира котвите.

$_GET['share'] е NULL нормално да го няма, ти подаваш id по гет ;).
 
От: Въпрос за преобразуване на един url адрес

@mvmrik написах ти го много отдавна как да стане. На самите бутони задаваш път до някакъв php скрипт, който според GET параметрите редиректва където искаш.
JS няма да ти реши проблема ако не промениш изцяло логиката на сайта ти, защото ФБ игнорира котвите.

$_GET['share'] е NULL нормално да го няма, ти подаваш id по гет ;).
Не е NULL, не съм написал какъв адрес давам към социалните мрежи. Направих го така, че за фейсбук адреса да бъде ?share=15 например, а като се натисне адреса става ?id=15#blog . В този си вид работи без проблем. Повече се чудя това дали няма да се води като дублирано съдържание, защото фактически има 2 адреса, водещи към едно и също нещо - share и id, макар че това share всъщност веднага пренасочва към ID.
 
От: Въпрос за преобразуване на един url адрес

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

Защо ли ми се струва, че излишно си усложняваш живота?

Този дизайн беше направен така, че въобще нямаше url адреси горе. Трябваше да преправям всичко, за да има всяка статия адрес. Както и да е, в момента работи и не смятам повече да се занимавам с това, че ми отне 2 дни от живота :) Благодаря на всички, които помогнаха. Сигурно има и по-добър начин, но аз за момента разбирам само от PHP и то не особено много, защото все още се уча. Допреди 2 месеца не можех да пусна дори елементарна POST и GET заявка, даже не знаех какво е това и програмирането ми беше свързано предимно с if, else и include :) Та това ми е целта като цяло - искам да се уча и да се тренирам на нещо, затова вече си направих няколко приложения.
 
От: Въпрос за преобразуване на един url адрес

@mvmrik да би някоя буква да ти е на кирилица?
Слагай хедър за 301 редеирект и после exit; след последния header()
 
От: Въпрос за преобразуване на един url адрес

@mvmrik да би някоя буква да ти е на кирилица?
Слагай хедър за 301 редеирект и после exit; след последния header()

Защо на кирилица? Не разбрах какво искаш да кажеш с това. Иначе идеята за 301 е добра, ще видя да го направя така.
 
От: Въпрос за преобразуване на един url адрес

Защото share и shаre са различни неща и затова в единия случай isset() ще върне null

Макар че аз не разбирам как може да се премахне share и да има само id щом ти добавяш във ФБ линк който съдържа share
 
От: Въпрос за преобразуване на един url адрес

Защото share и shаre са различни неща и затова в единия случай isset() ще върне null

Макар че аз не разбирам как може да се премахне share и да има само id щом ти добавяш във ФБ линк който съдържа share

Може и да съм объркал някоя буква тук, не знам, в сайта си работи. Идеята е, че във фейсбук url адреса трябва да е различен от този в сайта, за да има за какво да се следи и да се направи редиректа. Реалният url адрес в сайта е site.com?id=15#blog, а този който се споделя във фейсбук е site.com?share=15.

По този начин, като се натисне линка site.com?share=15 се прави проверка за съществуване на GET['share'] и като се види, че съществува, то се редиректва към оригиналния адрес с #blog накрая. Това е идеята като цяло и работи. Нарочно слагам share, което е различно от id, защото ако адреса е само id=15 тогава няма по какво да се следи за да се направи пренасочването (id така или иначе съществува), а и аз не искам да правя пренасочване всеки път, когато се отвори дадена страница, а само когато има споделен линк.
 
От: Въпрос за преобразуване на един url адрес

@mvmrik това стана ясно още от първия ти пост с адреса. Но ти твърдиш че share ти го няма, това съм ти го написал още в първия си пост в темата ;).
Затова казах за кирлицата.
 
От: Въпрос за преобразуване на един url адрес

@mvmrik това стана ясно още от първия ти пост с адреса. Но ти твърдиш че share ти го няма, това съм ти го написал още в първия си пост в темата ;).
Затова казах за кирлицата.
Да, ясно - както и да е. Важното е че работи, сложих 301 и да няма ефект от него, поне не пречи. С това няма да се занимавам повече, има още много друга работа по сайта.
 

Горе