Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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从cgi bin请求重定向_Apache_.htaccess_Mod Rewrite_Redirect_Cgi Bin - Fatal编程技术网

Apache从cgi bin请求重定向

Apache从cgi bin请求重定向,apache,.htaccess,mod-rewrite,redirect,cgi-bin,Apache,.htaccess,Mod Rewrite,Redirect,Cgi Bin,我打算捕获指向CGI-BIN的url请求,并使用参数和https将它们转发到不同的域 例如: http://example.com/cgi-bin/scrip1.py?name=Hello 到 由于请求在链接中有CGI-BIN,mod_rewrite无法工作:/ RewriteRule ^/cgi-bin/script1.py(.*)$ https://%{HTTP_HOST}/cgi-bin/script2.py$1 [NC,R=301,L] 它在非CGI请求上工作,但在CGI上失败。我错

我打算捕获指向CGI-BIN的url请求,并使用参数和https将它们转发到不同的域

例如:

http://example.com/cgi-bin/scrip1.py?name=Hello

由于请求在链接中有CGI-BIN,mod_rewrite无法工作:/

RewriteRule ^/cgi-bin/script1.py(.*)$ https://%{HTTP_HOST}/cgi-bin/script2.py$1 [NC,R=301,L]
它在非CGI请求上工作,但在CGI上失败。我错过什么了吗


注意:理想情况下,我希望捕获script1.py之后的参数,并将它们传递给script2.py

让我们从以下引用开始:

在每个目录的.htaccess文件中使用重写引擎时 前缀(对于特定目录始终相同)为 为重写规则模式匹配而自动删除,并且 自动添加在任何亲戚之后(不以斜线或斜线开头) 协议名称)替换遇到规则集的结尾。见 RewriteBase指令,了解有关将使用哪个前缀的更多信息 可以添加回相对替换

删除的前缀始终以斜杠结尾,表示匹配 针对从不具有前导斜杠的字符串发生。因此, 在每个目录上下文中具有^/从不匹配的模式

此外,匹配的url不包括查询字符串。假设您没有定义新的查询字符串,则查询字符串将自动覆盖

假设您的.htaccess位于您的www根目录中,则以下规则应起作用:

RewriteRule ^cgi-bin/script1.py$ https://%{HTTP_HOST}/cgi-bin/script2.py [NC,R,L]

将标志中的
R
更改为
R=301
if,并且仅当一切正常时。浏览器有时会缓存永久重定向,从而导致意外且无法调试的行为。您想在测试时使用临时重定向。

重写规则^cgi-bin/script1\.py$https://another.com/cgi-bin/script2.py [NC,R=301,L,QSA]
RewriteRule ^cgi-bin/script1.py$ https://%{HTTP_HOST}/cgi-bin/script2.py [NC,R,L]