2014-02-14 6 views
1

У меня ситуация, что я не буду в состоянии применить HTAccess на, в частности, этот URL:удалить конечный «/» символ из хэштегом URL

www.site.com/#hash

который вызывает важную функцию JS.

Некоторые источники посылают трафик www.site.com/#hash/ < - обратите внимание на завершающий слэш

Мне нужно решение быстро исправить (PHP будет мой первый выбор, и JS второй), что будет удалять любые окончательные «/» из URL-адреса, оставив любые хэш-коды (например,/# hash1, # hash2, #otherhash и т. д.) неповрежденными.

Я пробовал несколько десятков вещей, и до сих пор я до сих пор не нашел хороший способ настроить/изменить/удалить только «/» и ничего больше.

Например, я уверен, что это может работать:

$url = preg_replace('{/$}', '', $url); 

... но я не знаю, как направить его на фактический URL в адресной строке браузера.

И с JS, например, псевдокод:

if (window.location.hash.CONTAINS == '/') {window.location.hash = ''} 

В этом случае я не могу понять, как предназначаться только возможно «/» в конце.

ответ

1

Это проблема, которая не может быть решена на PHP. Вы должны использовать JavaScript.

Использование String.prototype.indexOf():

if (location.hash.indexOf('/') != -1) { 
    // remove the slash 
    location.hash = location.hash.replace('/', ''); 
} 

Если он должен быть конкретно последний слэш:

if (location.hash.substr(-1) == '/') { 
    location.hash = location.hash.slice(0, -1); 
} 
+0

Это делает плохой задание оставить хэш невредимым – Paulpro

+0

@Paulpro Это не казалось требованием но все равно обновляется. –

+0

Хеш и манипуляция URL всегда пинают мою задницу, поэтому спасибо, что выгнал меня. – user2777052

0

Попробуйте использовать String.prototype.replace сделать регулярное выражение замены:

window.location.hash = window.location.hash.replace(/\/$/, ''); 
Смежные вопросы