Использование хэш-знака (#) при поиске .htaccess

#html #.htaccess #search #ascii #hashtag

#HTML #.htaccess #Поиск #ascii #хэштег

Вопрос:

Итак, суть в том, что у меня есть файл:

 search.php
 

Когда я гото:

 search.php?search=#HashTag
 

Поиск возвращает: #HashTag

Но когда я использую свой метод .htaccess:

 /search/#HashTag
 

Ничего не возвращается. И я протестировал, поместив числовой знак позже в поиске, и он возвращается к этому моменту.

Это то, что у меня есть:

 RewriteRule ^search/([^.] )$ search.php?search=$1 [NE,L]
 

Что я делаю не так ..?

Ответ №1:

Измените свои флаги на [NE,B,L] .

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_b

mod_rewrite отменяет удаление URL-адреса перед применением преобразований. Я не уверен, почему он что-то теряет после хэша (возможно, он повторно интерпретирует его как URL и отбрасывает фрагмент?). В любом случае [B] повторно экранирует URL-адрес перед его запуском через правило перезаписи.

Ответ №2:

Нормально ли заменить его на # work?

(Ясность: в отличие от записи # в файле .htaccess)

Комментарии:

1. На самом деле это просто изменяет на косую черту

2. Только что перешел на сервер apache FreeBSD, и я заметил, что он не работает в этом дистрибутиве.