Это ссылка на руководства моего веб-сайта:
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.