2013-11-14 2 views
1

Вопрос кажется легким, но после 3 дней поиска я сдался. Я думал, что найду его здесь, и похоже, что он похож, но он не работает для этого.Wordpress - удалить #! символы от URL-адреса

В настоящее время у меня есть клиент, который имеет действительно продвинутый маркетинг, основанный на его предыдущем веб-сайте JS/AJAX. Ссылка на свой сайт похожа на

SERVER /#! LINK

Я создал сайт WordPress, и мне нужно, чтобы перекрестные ссылки открывали страницы должным образом.

Но если я получаю эту ссылку

SERVER /#! LINK

Я получаю следующий URL, когда процесс Wordpress это

SERVER/

Я исследовал, что единственный путь, или, по крайней мере, знаю только я это делать это с wordpress, но это не кажется легким.

У меня есть следующий сценарий, который может ADD #! но нужно удалить (только что нашел его где-нибудь)

<?php 
    $webSiteUrl = get_bloginfo('url')."/"; 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") { 
     $pageURL .= "s"; 
    }; 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    }; 
    if($webSiteUrl!=$pageURL){ 
     $pageHash = substr($pageURL, strlen($webSiteUrl), strlen($pageURL)); 
     header("location:".$webSiteUrl."#!/".$pageHash.""); 
     exit; 
    }; 
?> 

Благодаря брезгливым грифа Я почти там. Я использовал этот сценарий как один вы предоставили были некоторые проблемы с условием

if ('' !== window.location.hash && '#!' !== window.location.hash) { 
    hash = location.hash.match(/^#!(.*)/)[1]; 
    /* ... do something with hash, like redirecting to */ 
    /* another page, or loading page content via AJAX. */ 
    /* If all you want to do is remove everything from */ 
    /* the URL starting with `#!', then try this:  */ 
    location.href = location.protocol+'//'+location.host+location.pathname; 
} 

Это похоже на работу, но я получаю корневую страницу.

например. Я открываю

myweb.com/#!thisone 

и я получаю

myweb.com/ 

И ПРОСТО Суммировать так кто-то может сэкономить много времени - рабочий сценарий

if ('' !== window.location.hash && '!' !== window.location.hash) { 
     hash = location.hash.match(/^#!(.*)/)[1]; 
     /* ... do something with hash, like redirecting to */ 
     /* another page, or loading page content via AJAX. */ 
     /* If all you want to do is remove everything from */ 
     /* the URL starting with `#!', then try this:  */ 
     location.href = location.protocol+'//'+location.host+location.pathname+'/'+hash; 
    } 

ответ

1

Вы не можете сделать это в PHP, потому что сервер никогда не увидит фрагментацию URL-адреса (т. Е. Символ # и все, что следует за ним).

Вместо этого вам придется использовать Javascript на стороне клиента. Нечто подобное возможно:

if /^#!/.test(location.hash) { 
    hash = location.hash.match(/^#!(.*)/)[1]; 
    /* ... do something with hash, like redirecting to */ 
    /* another page, or loading page content via AJAX. */ 
    /* If all you want to do is remove everything from */ 
    /* the URL starting with `#!', then try this:  */ 
    location.href = location.protocol+'//'+location.host+location.pathname; 
} 

EDIT: Если я правильно понимаю, вы хотите, чтобы положить значение хэша в конце перенаправления URL. Это довольно легко сделать.Просто измените предпоследнюю строку вышеуказанного кода на

`location.href = location.protocol+'//'+location.host+location.pathname+'/'+hash;` 

Дополнительный параметр '/' может быть ненужным; Я оставлю вас, чтобы выяснить детали :-)

+0

Спасибо, это помогло получить направление, и я почти там. Теперь я перенаправлен на предыдущую страницу по URL-адресу, я использовал этот скрипт: \t if (''! == window.location.hash && '#!'! == window.location.hash) { \t hash = location.hash .match [1] (/^# (*) /!.); \t/* ... делать что-то с хешем, например перенаправлять на */ \t/* другую страницу или загружать содержимое страницы через AJAX. */ \t/* Если все, что вам нужно сделать, это удалить все, от */ \t/* в URL, начиная с '#«, то попробуйте следующее: */ \t location.href = location.protocol + '! //' + location.host + location.pathname; \t} – AlexP

+0

Просто ** ОГРОМНОЕ СПАСИБО ** для вас – AlexP

Смежные вопросы