2015-11-05 3 views
0

У меня есть http://domain.com/frame/1234sdfs, но я хочу, чтобы изменить его http://domain.com/#/frame/1234sdfsHtaccess перенаправить динамический URL на один с hashbang

Я использую метод проб и ошибок в данный момент и не получить нигде следующее в моей .htaccess

RedirectMatch 301 ^/frame/([^/]*)$ /#/frame/$1

Может ли кто-нибудь поместить меня в правильном направлении? Я использовал http://htaccess.madewithlove.be/, чтобы попытаться получить выходной URL как ожидалось, но не могу понять.

+0

Как это работает? Переадресации не обрабатываются вообще (возможно, проблема с настройкой веб-сервера), или только это перенаправление не работает. Почему вы хотите перенаправить URL-адрес с помощью '#'? Этот символ имеет особое значение в URL-адресах - обычно это значение понимается только в клиентском браузере, а не на сервере. Поэтому, если у вас нет особых причин использовать этот персонаж, я предупреждаю об этом. –

+0

@MikeBrant Недавно я создал сайт AngularJS в Google Compute Engine. Мне нужно, чтобы любые предыдущие вызовы '/ frame/{uniqueID}' пересылались, чтобы иметь hashbang. – ngplayground

+0

Правило правильное и должно работать с вашим корневым файлом .htaccess или конфигурацией Apache – anubhava

ответ

0

Вы должны использовать mod_rewrite, чтобы использовать флаг NE. Вероятно, он преобразуется в %23 с использованием mod_alias. Вам необходимо отправить его буквально с этим кодом здесь.

RewriteEngine On 
RewriteRule ^frame/([^/]+)/?$ /#/frame/$1 [NE,L,R=301] 

Опуская [NE] приведет к # преобразования в его hexcode эквивалентны,% 23, который затем приведет к 404 не найдена ошибка состоянии.

https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne

Примечание: Убеждается .htaccess разрешено и mod_rewrite включен.