Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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
Php htaccess,重定向到特定文件的https和非www https_Php_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Php htaccess,重定向到特定文件的https和非www https

Php htaccess,重定向到特定文件的https和非www https,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我有一个网站的工作,并试图通过htaccess重定向了几天。我在网上搜索并找到了不错的作品,尤其是在这个网站上,但尽管我尝试了几乎所有的可能性,但我还是没能实现我想做的 我的需要是重定向所有网站到非www http,包括https,除了只有一个文件。比如说重定向 http://www.example.com/../php?a=… https://www.example.com/../php?a=… https://example.com/../php?a=… 到 http://example.c

我有一个网站的工作,并试图通过htaccess重定向了几天。我在网上搜索并找到了不错的作品,尤其是在这个网站上,但尽管我尝试了几乎所有的可能性,但我还是没能实现我想做的

我的需要是重定向所有网站到非www http,包括https,除了只有一个文件。比如说重定向 http://www.example.com/../php?a=…
https://www.example.com/../php?a=…
https://example.com/../php?a=…

http://example.com/../../php?a=…

但是,只有一个特定文件
http://www.example.com/../theSpecificFile.php?a=…
https://www.example.com/../theSpecificFile.php?a=…
http://example.com/../theSpecificFile.php?a=…
应重定向到
https://example.com/../theSpecificFile.php?a=…

为此,我编写了许多htaccess文件,但在每种情况下,我都无法满足自己的需求。e、 g.在最后一次访问时:

Options +FollowSymlinks        
RewriteEngine on    
RewriteBase /    

ErrorDocument 404 http://example.com/404.php    

#force https for certain pages        
RewriteCond %{HTTPS} !=on    
RewriteRule ^(theSpecificFile\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]    

RewriteCond %{HTTPS} on    
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]    

#redirect www.example.com to example.com (or any other subdomain)    
RewriteCond %{HTTP_HOST} !^example.com$ [NC]    
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 
通过此htaccess文件,

当我尝试https://www时,我得到了不安全或不受信任的连接(我是从另一种语言翻译的,希望它可能是真实的翻译),带有ssl\u error\u bad\u cert\u域

并且当我尝试访问specific文件.php时,我得到了错误定义“infine loop”(我再次希望这可能是一个真实的翻译)

这对我来说真的很沮丧,所以,任何帮助都将不胜感激


提前感谢

看,这里您将
specificFile.php
重定向到它的https版本,但是第二个重定向规则触发并将浏览器重定向回http,然后第一个规则重定向回https…这就是为什么您得到无限循环的原因

ssl\u error\u bad\u cert\u domain表示证书不适用于此域,因此您可能需要检查是否使用了正确的证书。

请尝试:

RewriteCond %{HTTPS} on
RewriteConf %{REQUEST_URI} !=/theSpecificFile.php
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
您可以使用:

RewriteCond %{HTTPS} on    
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{REQUEST_URI} !/theSpecificFile\.php [NC]
RewriteRule ^ http://example.com/%{REQUEST_URI} [L,R=302]    

RewriteCond %{HTTPS} off    
RewriteCond %{REQUEST_URI} /theSpecificFile\.php [NC]
RewriteRule ^ https://example.com/%{REQUEST_URI} [L,R=302]    

当一切正常时将[R=302,L]更改为[R=301,L]

Ok,在更改第一行和第二行“RewriteCond和RewriteRule”位置后,当尝试进入example.com时,在RewriteConf%{REQUEST\u URI}上重定向到“
RewriteCond%{HTTPS}”=/theSpecificFile.php RewriteRule(.*)http://%{http\u HOST}%{REQUEST\u URI}[R,L]#强制某些页面使用https RewriteCond%{https}!=在RewriteRule^(theSpecificFile\.php)$https://%{HTTP_HOST}%{REQUEST_URI}[L,R]
尝试使用example.com访问htaccess并获得https://example/com