首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在加载网页前先用PHP截取角URL

问在加载网页前先用PHP截取角URL
EN

Stack Overflow用户
提问于 2019-05-29 08:47:16
回答 1查看 1.4K关注 0票数 1

我们目前有一个完整的角度项目运行在我们的服务器上的一个子dir和一个物理的“设备”使用硬编码的URL发送一个用户到该页面。

我正在寻找某种方式,通过PHP脚本“拦截”请求(例如,不是真正的目的),查看该浏览器页面的请求"ID“param是否启用了查看浏览器页面的选项,或者用户是否已将其配置为返回HTTP 406响应(例如)。

代码语言:javascript
复制
Currently:
- ..com/app/routing-view?id=1234 => Angular view -> fetch info

Idea:
- ..com/app/routing-view?id=1234 => PHP-script -> isValid => forward to angular and do a normal 'webview' -> fetch info
- ..com/app/routing-view?id=2889 => PHP-script -> notValid => HTTP code

我想让一个.htaccess“拦截”这个url并将它转发到一个.php文件。执行魔术并在那里进行检查,然后将浏览器转发到原来的url,但是要“绕过”前面的拦截器。

关于最后那部分,我现在有问题。因为它是角的,而且它使用路径,所以我不能只说“好的,重定向到index.html而不是index.php”,因为它需要类似于..com/app/routing-view?id=1234 (而index.html位于/app目录中)。

如果可以避免,我不想将PHP代码添加到原始的角索引文件中。

我是否认为这是正确的,还是会有另一种更有效的方法来解决这个问题?

这一切的原因是,我希望(例如)向设备返回不同的HTTP代码或不同的头,而不是200个html头响应,即使ID被禁用或类似的情况。

EN

回答 1

Stack Overflow用户

发布于 2019-05-29 15:35:10

它通过一个简单的.htaccess、一个参数和一个“拦截器”脚本来工作。非常简单和基本的,真的,不知道为什么我的大脑不走这条路之前,我的问题。

  1. 使用以下代码将.htaccess添加到角应用程序的根中。
代码语言:javascript
复制
RewriteEngine On

# Check if the request has been intercepted before (via URL parameter)
RewriteCond %{QUERY_STRING} !(^|&)intercepted=true

# .. If not, rewrite the page to use the interceptor script (only if it matches the route).
RewriteRule ^my-route dir-of-script/extra/interceptor.php?url=https://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [L,QSA]


# Other stuff for rewriting the Angular routes etc
...
  1. 添加了一个类似于/dir-of-script/extra/interceptor.php的脚本,它从GET参数中解析URL,获取信息,进行检查,并根据结果进行检查,返回输出或重定向页面并让它通过。

这将向原始URL添加一个..&intercepted=true参数,这样.htaccess就不会再次拦截它。

这似乎是一种魅力(对我的处境)。唯一的“缺点”是,这是一个重定向,而不仅仅是重写时,它被允许通过。将进一步研究它,可能让PHP脚本“服务”角度的内容,而不是重定向到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56356518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档