我有一个带有 Web 视图的 Swift 项目,该项目正在从本地文件夹 vai GCDwebserver 提供文件,但是该网站被设计为单页应用程序,有什么方法可以重写所有 url 请求以索引.html?
我目前正在使用 GCDwebserver,但我愿意更改服务器以使 SPA 加载到网络视图中。
使用nginx,我会做类似的事情
server {
listen 8080;
listen [::] 8080;
root /root/bundled;
location / {
try_files $uri $uri/ /index.html;
}
}
如何在 osx 中的网页视图上获得相同的重写效果?
只需使用默认处理程序即可捕获所有 GET 请求:
- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block;
或者如果你想做更花哨的匹配,一个正则表达式:
- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block
甚至一直到火柴块:
- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
我必须承认我从未使用过GCDWebserver,但是如果您在iOS应用程序中有任何重定向URL的要求,则可以使用NSURLProtocol。 您可以在此处阅读有关它的更多信息 https://www.raywenderlich.com/76735/using-nsurlprotocol-swift. 阅读链接后,您基本上需要使用 canonicalRequestForRequest 方法来捕获当前请求并返回一个新请求。 希望有帮助。