如果url以“News”结尾,则htaccess修改标题

时间:2020-02-21 作者:Jacksonkr

我有一个wordress页面/mysite/news 我正在尝试使用javascript将其加载到另一个站点。这是一种自然的cors冲突,因此我将cors设置为*以绕过该问题,前提是url为/mysite/news

但是,以下操作不起作用。我怀疑REQUEST\\u URI实际上正在解析为index.php?page=xxx 但我不确定。我怎样才能避开cors问题?

<If "%{REQUEST_URI} =~ m#news\\/?$#">
  Header always set Access-Control-Allow-Origin "*"
  Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
  Header always set Access-Control-Max-Age "1000"
  Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
</If>

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

我怀疑REQUEST\\u URI实际上正在解析为index.php?page=xxx

是的,mod\\u rewrite似乎是在计算Apache表达式之前处理的。因此,URL已重写为index.php (WordPress前端控制器),然后再计算表达式中请求的URL。

然而,我们可以通过使用SetEnvif 基于请求的URL(发生在mod\\u rewrite之前),并在表达式中检查此env var。然而,另一个复杂的问题是,此环境变量被重命名/前缀为REDIRECT_ 将URL重写(第一轮处理)后index.php.

例如:

SetEnvIf Request_URI "news/?$" APPLY_CORS
<If "-n reqenv(\'REDIRECT_APPLY_CORS\')">
  Header always set Access-Control-Allow-Origin "*"
  Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
  Header always set Access-Control-Max-Age "1000"
  Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
</If>
SetEnvIf 设置APPLY_CORS 环境收件人"1" 如果正则表达式与请求匹配。

这个-n Apache表达式中的运算符只是测试返回的字符串是否为空。

<小时>UPDATE: 另一种方法是对照THE_REQUEST 而是服务器变量,它包含HTTP请求的第一行(例如。GET /mysite/news HTTP/1.1*1),并且不会随着URL的重写而更改。有一点需要注意的是,正则表达式可能更复杂一些。

()THE_REQUEST 包含从客户端发送的原始%编码URI、查询字符串和全部。)

例如,与上述内容等效的内容(允许任何合理的查询字符串)如下所示:

<If "%{THE_REQUEST} =~ m#news/?(\\?[\\w=&-]*)?\\s#">
:
</If>

相关推荐

Wp-登录时的基本身份验证.htAccess,但允许从WooCommerce注销

我使用.htaccess 在我的WC网站上进行基本身份验证,以帮助防止黑客访问wp-login, 效果很好。。。除WooCommerce外,如果登录的客户想要从其帐户注销-单击注销链接后,他们会收到基本的身份验证弹出窗口,要求他们“授权”(由我们的.htaccess).在Woocommerce仪表板上:您好MrTest(不是MrTest?注销)<<;单击“注销”将打开基本身份验证登录框。。。。我们如何避免这种情况?以下是htaccess的内容:<FilesMatch \"wp-login.p