这是我的网站手册的链接:
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
/manual/
第二种方法也会导致图像和文件丢失,因为 URL 不是已知路径。我如何阻止或重定向在和之间的 URL 中添加的随机路径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/
答案1
这些 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。