Это ссылка на руководства моего сайта:
https://www.example.com/manual/ch016_user-moves.xhtml
но, к сожалению, к нему можно получить доступ и так:
https://www.example.com/manual/blablablafoobar/ch016_user-moves.xhtml
или
https://www.example.com/manual/what-ever-youwanttoputinhere/ch016_user-moves.xhtml
второй способ также приводит к отсутствию изображений и файлов, поскольку URL-адрес не известен. Как я могу заблокировать или перенаправить эти случайные пути, добавленные в URL-адрес между /manual/
и file.xhtml
?
Единственные правила в моих конфигурациях vhost следующие:
RewriteEngine on
RewriteRule ^/manual/(.*).xhtml /manual/index.php/$1 [PT]
RewriteRule ^/manual/(.*).html /manual/index.php/$1 [PT]
Alias /manual /home/piatek/chess-manual/
Тот факт, что эти URL-адреса доступны, в первую очередь, может быть связан с вашими существующими директивами:
RewriteRule ^/manual/(.*).xhtml /manual/index.php/$1 [PT] RewriteRule ^/manual/(.*).html /manual/index.php/$1 [PT]
В частности, (.*)
Спички что-нибудь - другими словами, неограниченная глубина URL-пути (которая затем остается для вашего index.php
сценарий для расшифровки - что он, по-видимому, успешно делает!). Попробуйте ограничить это ([^/]+)
так что он будет соответствовать только имени файла, а не всему URL-пути. Эти две директивы также можно объединить в одну.
Например, попробуйте следующее вместо двух указанных выше директив:
RewriteRule ^/manual/([^/]+)\.x?html$ /manual/index.php/$1 [PT]
Это, вероятно, приведет к тому, что эти "недействительные" URL-адреса будут возвращать 404.