Переписать мод для этого условия

#.htaccess #mod-rewrite

#.htaccess #мод-переписать

Вопрос:

Я пытаюсь переписать www.mysite.com/admin/index.php?page=pagename чтобы www.mysite.com/admin/pagename

В моем файле .htaccess (расположенном в www.mysite.com/admin ) — это следующие строки кода

 RewriteEngine on
RewriteRule ^([^/.] )/?$ index.php?page=$1 [L]
 

Однако, когда я пытаюсь получить доступ

 www.mysite.com/admin/mypage?querystring=value 
 

Я должен напечатать

  www.mysite.com/admin/mypageamp;querystring=value
 

вместо этого. Первый ? должен быть знак amp; из-за перезаписи мода.

Как я могу создать правило перезаписи, которое устранит эту проблему? Поэтому я хочу

 www.mysite.com/admin/mypage/?additional_query=value
 

чтобы переписать в

 www.mysite.com/admin/index.php?page=mypageamp;aditional_query=value
 

Я думаю, Google использует знак # или что-то в этом роде, или ставит / после этого. Как мне это сделать?

Ответ №1:

У Apache уже есть аккуратный маленький модификатор, который вы можете добавить в конец вашего RewriteRule . Если вы просто измените свой флаг ( [L] ) в конце своего правила [QSA,L] , он добавит строку вашего запроса в конец URL-адреса, вместо того, чтобы пытаться переписать страницу, все еще включив ее (при условии, что строка запроса начинается с ? , как и ожидалось.

Я не уверен, но я считаю, что вам $ также нужно удалить символ.

Новая строка:

 RewriteRule ^([^/.] )/? index.php?page=$1 [QSA,L]
 

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

1. Спасибо за помощь, но это ничего не изменило. 🙁