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

Блокируйте доступ к случайным URL-адресам с помощью Apache mod_rewrite

Это ссылка на руководства моего сайта:

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.