【问题标题】:Is it possible to have if condition with htaccess是否可以使用 htaccess 设置 if 条件
【发布时间】:2015-02-19 13:04:31
【问题描述】:

我想用 .htaccess 编写简单的 if / else 条件

这是用php编写的代码。

if(isset($_GET['get'])){
    header('Access-Control-Allow-Origin: *');
}

是否有可能与 htaccess 有相同的条件

if(isset($_GET['get'])){
   <IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
   </IfModule>
}

【问题讨论】:

  • AFAIK 你不能像这样直接将 PHP 混合到 .htaccess 中。但是 .htaccess 语法有它自己的方式来做一个 IF。
  • @LauriK 这只是说明我想要什么。

标签: php regex .htaccess mod-rewrite if-statement


【解决方案1】:

您可以使用 PHP 代码的 .htaccess 等效项。您当然不能直接在 PHP 中调用 .htaccess 代码。

因此,要根据查询参数的存在有条件地设置标题,您将执行类似的操作

RewriteEngine on

RewriteCond %{QUERY_STRING} (^|&)get=[^&]+ [NC]
RewriteRule ^ - [env=GET]

Header set Access-Control-Allow-Origin "*" env=GET

只需确保 mod_headers 模块也已加载。


请注意,当且仅当get 带有某个值时,上述正则表达式才会通过。我相信 PHP 的 isset($_GET['get']) 会返回 true,即使收到 getempty。要匹配此行为,您需要改用 (^|&amp;)get(=|&amp;|$)。

【讨论】:

  • 非常感谢您的回答。但是我无法在我的开发环境中运行它。从这个地址localhost/akasiayachting.com/… 可能是什么原因。因为我可以回显 $_GET['get'];
猜你喜欢
  • 2012-01-26
  • 2014-06-09
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2021-05-03
相关资源
最近更新 更多