You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在htaccess中排除特定URL以避免PayPal脚本被CSP拦截

解决CSP规则排除特定URL的配置方案

关于Files/FilesMatch在<IfModule>内的可用性

可以在<IfModule>内部使用Files或FilesMatch指令,但它们仅匹配文件系统中的文件名,而非请求的URL路径,这就是你之前用负向前瞻正则匹配/order、/paypal开头URL失败的核心原因——这类指令不处理URL路径逻辑。

正确的配置方法

根据Apache版本,提供两种可靠方案:

方案1:Apache 2.4+ 用<If>指令(推荐)

利用<If>指令的路径匹配逻辑,仅对非/order和/paypal开头的URL设置CSP:

<IfModule mod_headers.c>
    # 仅当请求路径不以/order或/paypal开头时,设置CSP
    <If "%{REQUEST_URI} !~ m#^/(order|paypal)#">
        Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src 'self' *.youtube.com; img-src * data:; media-src * data:; report-uri /logging"
    </If>
</IfModule>
  • 正则^/(order|paypal)精准匹配以/order或/paypal开头的URL路径
  • !~表示“不匹配”该正则条件

方案2:兼容Apache 2.2的SetEnvIf+Header条件设置

如果服务器是Apache 2.2(不支持<If>指令),可通过环境变量做判断:

<IfModule mod_headers.c>
    # 给/order和/paypal开头的URL标记环境变量
    SetEnvIf Request_URI "^/(order|paypal)" SKIP_CSP=1
    
    # 仅当SKIP_CSP环境变量不存在时,设置CSP
    Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src 'self' *.youtube.com; img-src * data:; media-src * data:; report-uri /logging" env=!SKIP_CSP
</IfModule>
  • SetEnvIf根据请求URI设置环境变量SKIP_CSP
  • env=!SKIP_CSP表示仅当该环境变量不存在时,才发送CSP头

内容的提问来源于stack exchange,提问作者Avatar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:57:09