Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess仅当GET参数存在时重定向_Apache_.htaccess_Redirect_Mod Rewrite_Http Redirect - Fatal编程技术网

Apache .htaccess仅当GET参数存在时重定向

Apache .htaccess仅当GET参数存在时重定向,apache,.htaccess,redirect,mod-rewrite,http-redirect,Apache,.htaccess,Redirect,Mod Rewrite,Http Redirect,我的.htaccess文件中有以下行: Redirect 301 /folder1 https://www.example.com/folder2/file.php 这将把所有内容从/folder1重定向到https://www.example.com/folder2/file.php 我需要一个条件,仅当URL包含mykey=GET参数时才允许此重定向,否则忽略此重定向命令 我该怎么做?我终于找到了一个有效的解决方案: RewriteCond %{REQUEST_URI} ^/folder1

我的
.htaccess
文件中有以下行:

Redirect 301 /folder1 https://www.example.com/folder2/file.php
这将把所有内容从
/folder1
重定向到
https://www.example.com/folder2/file.php

我需要一个条件,仅当URL包含
mykey=
GET参数时才允许此重定向,否则忽略此重定向命令


我该怎么做?

我终于找到了一个有效的解决方案:

RewriteCond %{REQUEST_URI} ^/folder1/
RewriteCond %{QUERY_STRING} mykey=
RewriteRule ^folder1\/$ /folder2/file.php$1 [R=301,L]

您不能使用执行基本URI匹配的
重定向
指令来执行此操作

您需要使用基于
mod_rewrite
的规则来执行以下操作:

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)mykey= [NC]
RewriteRule ^folder1(/|$) /folder2/file.php [R=301,L,NC]
确保在测试之前清除缓存

参考文献:


啊,我刚才记下了你自己的答案。这里没有
$1
,可以删除
RewriteCond%{REQUEST_URI}