.htaccess переписать URL с вопросительным знаком "?"

Моя цель заключается в следующем:

component/users/?view=registration

Для того, чтобы:

registration.html

.htaccess находится в папке mysite сайта.

я попробовал это:

RewriteBase /mysite
RewriteRule ^component/users/?view=registration$ registration.html$ [R=301,L]

Но я не работаю...

Когда я попробую это:

RewriteRule ^component/users/_view=registration$ registration.html$ [R=301,L]

это работает очень хорошо.

Так, как я могу решить эту проблему с вопросительным знаком. Я уже читал, что это не является частью URL (его добавлено). Я прочитал, что мне нужно использовать что-то вроде строки запроса, но я не совсем понял синтаксис.

Может быть, кто-то может написать решение этой проблемы? Было бы здорово =)

Ответ 1

Вам нужно использовать %{QUERY_STRING} для записи данных строки запроса:

RewriteCond %{QUERY_STRING} ^view=(.*)$
RewriteRule ^component/users/?$ %1.html? [R=301,L]

Приведенное выше правило/условие примет значение представления строки запроса и будет использовать его для формирования перенаправления, если соответствует путь component/users.

Ответ 2

RewriteRule ^component/users/\?view=registration$ registration.html$ [R=301,L]

Вам нужно\из-за? является частью регулярного выражения. Чтобы использовать его как строку, вам нужно сбежать с помощью \

Ссылка: http://ole.michelsen.dk/tools/regex.html