.htaccess文件影响包含文件(包括图像)

时间:2011-09-22 09:22:58

标签: php .htaccess

我目前正在尝试使用一个脚本来确保用户登录到中央登录系统。

问题是,包含此文件夹中的任何文件(包括PHP和图像文件)都无法访问,无论是仅使用<?php include 'file.php' ?>时,还是作为图像,即<img src="image.png" />等。

我在.htaccess文件中使用的代码如下:

RewriteEngine on
# The original URL is set as an environment variable SSO_REQUESTED rather than
# a query parameter, so it's not vulnerable to hacking.
# It shows up in PHP as $_SERVER['REWRITE_SSO_REQUESTED'].
RewriteCond %{REQUEST_URI} !ssoclient
RewriteRule (.+) /sso/ssoclientfilter.php [E=SSO_REQUESTED:$1,L]

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

使用include的相对路径是非常糟糕的行为。您真的应该在脚本中使用文档根路径设置一些变量或常量。对于HTML也是如此:您应该在标题中包含BASE标记,以便为图像,样式,脚本等的相对路径设置基础(根)。此外,在您的htaccess中设置RewriteBase也很有用。

然而,奇怪的是,htaccess也会影响php的include,它通常使用文件系统的路径,而不是URI。

答案 1 :(得分:0)

如果您的代码要确保您的用户登录到中央登录系统,则不会使用PHP代码:

<?php

if (!isset ($_COOKIE[ini_get('session.name')])) {
     session_start();
}else{
     print "<SCRIPT>window.location='/sso/ssoclientfilter.php';</SCRIPT>";
}

在上面的代码中,没有先前启动会话的任何人都会被定向到您的ssoclientfilter.php,并且不会触及您的其他图像和文件夹。这位于session_start()所在的位置应该可以解决您的问题。