Назад | Перейти на главную страницу

Как ведущие косые черты обрабатываются на сервере и на клиенте?

Я пытаюсь создать RewriteRule, но это ненадежно, и я не могу понять, что происходит. Вот мое правило:

RewriteRule ^docs/(......)/$ index.php?docid=$1 [L]

проблема заключается в косых чертах, которые, как я слышал, очень неприятны. Происходит следующее:

если вы добавите косую черту в конце URL-адреса, все будет работать должным образом. однако, если вы не добавите косую черту в конце, URL-адрес превратится в следующий:

http://www.mywebsite.com/docs/abcdef/?docid=abcdef

Он включает данные GET после URL-адреса. Самое смешное, что сайт по-прежнему работает, как ожидалось. Как это вообще происходит? Согласно измененному мной правилу, URL-адрес должен выглядеть следующим образом:

http://www.mywebsite.com/index.php?docid=?docid=abcdef

но после дальнейшего тестирования кажется, что добавленные данные get полностью игнорируются. серьезно, я пробовал писать что-нибудь после вопросительного знака. На сайт ничего не влияет.

Я был бы признателен, если бы кто-нибудь мог объяснить мне, что происходит. Также, если бы кто-нибудь мог показать мне, как изменить rewriterule, чтобы перезапись работала.

Технические подробности:

Просто установите конечный / по желанию с ?:

RewriteRule ^docs/(......)/?$ index.php?docid=$1 [L]