Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
htaccess http到https重定向以重写,但附加php GET_Php_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

htaccess http到https重定向以重写,但附加php GET

htaccess http到https重定向以重写,但附加php GET,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我的http到https重定向是301重定向,但它包括重写规则中附加的PHP。例如: 正在重定向到 这是我的https重定向: RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 我的重写规则是: RewriteRule ^/staff/(.*)/$ staff.php?hookName=$1 在我的PHP页面上,我可以将它连接到正确的链接。然而,我试图阻止它发生在第一位

我的http到https重定向是301重定向,但它包括重写规则中附加的PHP。例如:

正在重定向到

这是我的https重定向:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
我的重写规则是:

RewriteRule ^/staff/(.*)/$ staff.php?hookName=$1
在我的PHP页面上,我可以将它连接到正确的链接。然而,我试图阻止它发生在第一位,所以我没有一个双301


有什么想法吗?

在您的情况下,将内部重写置于外部重定向下将解决问题。请注意,由于您使用了301重定向,浏览器可能缓存了旧的重定向,完全绕过了服务器。使用以前未尝试过的其他url,在以前未测试过的其他浏览器中尝试,或者清除缓存。在将来,我建议将所有重定向转换为302或临时重定向,直到您彻底测试所有操作是否按预期工作。

只需删除重写规则RewriteRule^/staff/*/$staff.php?hookName=$1您是否将重定向规则放在重写规则之前?我尝试过移动它,但是没有work@GarethHanda301响应被所有现代浏览器缓存,尤其是Chrome或Firefox。。因此,在这里必须清除浏览器缓存并重新启动浏览器。这就是为什么最好先用302进行测试,然后在测试完成后再转换成正确的301。