小编dec*_*cay的帖子

PHP https检查灵活的ssl(cloudflare),该怎么办?

背景:网站(example.com),dns通过cloudflare pro计划设置,这提供了"灵活的ssl"(在这里阅读),这意味着ssl只存在于客户端和cloudflare之间,而不是cloudflare和服务器之间,因此不需要专用的ip和不需要在服务器上进行特殊设置.服务器设置为不使用ssl(只是一个通用网站),但是cloudflare灵活的ssl正在处理ssl方面.

语言:PHP(codeignighter,但这并不重要)

目标:浏览域"exmple.com/ "或"http:// exmple.com/ "时,生成变量"http:// example.com",并在浏览"https:// example.com"时/*"生成变量"https:// example.com".

什么应该工作(但不是):

$root = '';
if( isset($_SERVER['HTTPS'] )  && $_SERVER['HTTPS'] != 'off' )
{
    //it doesnt reach here...
    $root .= 'https://';
}
else
{
    $root .= 'http://';
}
$root  .= "".$_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
Run Code Online (Sandbox Code Playgroud)

我总是可以做到:"// example.com",但这对我来说并没有真正解决问题.思考?我应该做一些字符串比较来确定https-ness吗?

我确定原因是当请求到达服务器(https或http)时,它来自端口80并且它不会被识别为ssl,因此未定义$ _SERVER ['HTTPS'].我可以在服务器和cloudflare之间设置一个自定义的ssl,但如果我可以使用一些正则表达式并以某种方式比较网址,那么会更好(更省力).

我还想知道可能存在的问题和漏洞.

谢谢 :)

php ssl https cloudflare

12
推荐指数
3
解决办法
7319
查看次数

使用自定义htaccess mod重写时,有效路由上的Codeigniter 404

我在使用自定义(有点奇怪)的htaccess文件夹映射时遇到了codeignighter的问题.但是,它应该在技术上有效,但事实并非如此.有人能帮我吗?


场景1(工作正常):

文件夹结构和密钥文件

/ is the website root
/.htaccess
/api/ <this is the CodeIgniter Root, with index.php and default CI .htaccess>
Run Code Online (Sandbox Code Playgroud)

/.htaccess:

RewriteEngine On
RewriteRule ^api/(.*)$ /api/$1 [L]
Run Code Online (Sandbox Code Playgroud)

例如,访问mydomain.com/api/admin/会让我进入我的admin-controller/index操作并加载视图.

对于$ _REQUEST,index.php上的var_dump显示

array (size=1)
'admin/' => string '' (length=0)
Run Code Online (Sandbox Code Playgroud)

场景2(不起作用):

文件夹结构和密钥文件

/.htaccess
/current/.htaccess
/current/api/ <this is the CodeIgniter Root, with index.php and default CI .htaccess, this is the same folder/files/htaccess as above scenario>
Run Code Online (Sandbox Code Playgroud)

/.htaccess:

RewriteEngine On
RewriteRule ^(.*)$ /current/$1 [L]
Run Code Online (Sandbox Code Playgroud)

/current/.htaccess:

RewriteEngine On
RewriteRule ^api/(.*)$ /api/$1 [L]
Run Code Online (Sandbox Code Playgroud)

例如,访问mydomain.com/api/admin/可以访问Codeigniter 404页面/视图.

对于$ _REQUEST,index.php上的var_dump显示(与场景1相同) …

php .htaccess mod-rewrite codeigniter

11
推荐指数
1
解决办法
571
查看次数

标签 统计

php ×2

.htaccess ×1

cloudflare ×1

codeigniter ×1

https ×1

mod-rewrite ×1

ssl ×1