我正在开发一个使用 Symfony2 将书籍显示为交互式 Flash 内容的应用程序。每本书都有一个 index.html 文件,该文件包含所有嵌入在 html 代码中的 flash 内容和一些目录,其中包含书籍的所有必需部分(图像、js 文件等)与该 index.html 文件链接,并通过“src”相互链接和“href”标签等。我想在我的网站上显示这些书籍,同时防止匿名用户下载它们。
例如:
我的书在 web/Books 文件夹中,要显示 Book1 我必须显示 web/Books/Book1/index.html 文件。通过将这些文件放在 web 目录中,我允许匿名用户通过键入例如 www.example.com/Books/Book1/index.html 或类似的图像、js 文件等来访问它们(路径可以从书籍索引的内容中读取.html)。
有什么办法可以防止这种情况发生吗?
我是服务器的管理员,根目录设置在 web 目录中,如推荐的那样。
提前感谢您的任何回答。
编辑。[已解决]
好的,我找到了解决方案。这类似于 Pier-Luc 的 Gendreau 提案。
想法:
所有书籍都位于'books'文件夹中,每本书的index.html路径是/books/{title}/index.html。在.htaccess中我写了RedirectMatch,例如:/books/book1/index.html被重定向到/bookrouter/book1/index.html。像这样的路径不是现有文件的路径,因此 Symfony2 可以将其作为路由处理。路由模式是 /bookrouter/{path}.{_format}(需要 {path} 以允许“/”符号),因此我可以使用正确的标题和内容创建准确的响应,并通过所有必需的身份验证/授权提供所需的文件。这有两个不好的方面:
1. 我必须分别处理每个文件扩展名以创建正确的 http 标头和内容。
2. 更有经验的程序员说,如果我们的用户数量和我们预期的一样多,这种处理每个请求的方式会杀死我们的服务器,所以我们不能使用它。
所以人们,谢谢你的时间!我希望我的解决方案描述清楚,也许将来有人会发现它有用。干杯!