在 Blazor Web Assembly 项目中放置 Robots.txt 的最佳位置在哪里?
Where is the best place to put Robots.txt in a Blazor Web Assembly project?
我有一个 Blazor Web Assembly 项目,它由一个共享项目、客户端项目和一个服务器项目组成,我想知道在哪里放置 Robots.txt 来阻止爬虫。
看来我的选择是:
- 客户端项目\WWWRoot
- 中间件 - 但在客户端或服务器上?
- 服务器控制器 - 创建一个带有操作的控制器?
但不确定最佳做法是什么?
在讨论您的选择之前,先回顾一下“服务器”和“客户端”项目。 Blazor WASM 在编译时 - 本质上 - 只是一堆静态文件。您的服务器项目将这些静态文件提供给客户端。
让我们开始讨论您的选择。
- 正在客户端项目的 wwwroot 文件夹中创建一个 robots.txt 文件。
结果将是服务器项目的 wwwroot 文件夹中的 robots.txt 文件。如果服务器是一个 API 和一个 MVC 项目并且你想启用爬虫,请记住正确编写你的文件。
1b) 也就是说,也可以在服务器项目的 wwwroot 目录中创建 robots.txt。
- 中间件
中间件,在拦截HTTP请求的意义上,只能写在服务端。同样,客户端只是一些静态文件。
中间件需要拦截 robots.txt 的 HTTP GET 请求。如果您心中有某些规则,为什么应该满足某些请求而另一些则不需要。那么中间件是一个不错的选择。否则,中间件会添加与 robots.txt 文件相同的值,同时具有更多的复杂性。
- 服务器控制器
路由系统非常灵活,通过一些技巧,应该可以将 robot.txt 的请求定向到控制器。但是这种方式比第二种方式更复杂,缺点也一样。
我的建议是在客户端项目的 wwwroot 目录 中创建一个 robot.txt 文件,除非您有复杂的规则来“限制访问”该文件。如果是这样,请使用中间件。
如果您想“测试”结果,我发现拥有您的服务器项目的 dotnet publish
很有见地。您可以看到托管后的结果(在本例中为静态文件)。
我有一个 Blazor Web Assembly 项目,它由一个共享项目、客户端项目和一个服务器项目组成,我想知道在哪里放置 Robots.txt 来阻止爬虫。
看来我的选择是:
- 客户端项目\WWWRoot
- 中间件 - 但在客户端或服务器上?
- 服务器控制器 - 创建一个带有操作的控制器?
但不确定最佳做法是什么?
在讨论您的选择之前,先回顾一下“服务器”和“客户端”项目。 Blazor WASM 在编译时 - 本质上 - 只是一堆静态文件。您的服务器项目将这些静态文件提供给客户端。
让我们开始讨论您的选择。
- 正在客户端项目的 wwwroot 文件夹中创建一个 robots.txt 文件。
结果将是服务器项目的 wwwroot 文件夹中的 robots.txt 文件。如果服务器是一个 API 和一个 MVC 项目并且你想启用爬虫,请记住正确编写你的文件。
1b) 也就是说,也可以在服务器项目的 wwwroot 目录中创建 robots.txt。
- 中间件
中间件,在拦截HTTP请求的意义上,只能写在服务端。同样,客户端只是一些静态文件。
中间件需要拦截 robots.txt 的 HTTP GET 请求。如果您心中有某些规则,为什么应该满足某些请求而另一些则不需要。那么中间件是一个不错的选择。否则,中间件会添加与 robots.txt 文件相同的值,同时具有更多的复杂性。
- 服务器控制器
路由系统非常灵活,通过一些技巧,应该可以将 robot.txt 的请求定向到控制器。但是这种方式比第二种方式更复杂,缺点也一样。
我的建议是在客户端项目的 wwwroot 目录 中创建一个 robot.txt 文件,除非您有复杂的规则来“限制访问”该文件。如果是这样,请使用中间件。
如果您想“测试”结果,我发现拥有您的服务器项目的 dotnet publish
很有见地。您可以看到托管后的结果(在本例中为静态文件)。