我遇到了一个问题,我正在努力解决问题:
在根文件夹中我有一个htaccess文件,其中包含以下规则:
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME}/index.php !-s
RewriteCond %{REQUEST_FILENAME}/index.html !-s
RewriteCond %{REQUEST_FILENAME}/index.htm !-s
RewriteRule ^(.*)$ redirect.php [QSA]
所以如果找不到文件/目录/索引文件,我的目标是重写为redirect.php
。
这对我的整个网站都非常有效,所以没问题......直到我有一个受密码保护的文件夹,并带有以下htaccess文件:
AuthUserFile /path/to/htpasswd
AuthName EnterPassword
AuthType Basic
require user adminUserName
似乎apache认为转到此文件夹无效并执行重写为redirect.php
。
但是,如果我已经过身份验证(通过禁用上面的重写,登录,然后重新重新启用重写),它可以工作......
我在上面的规则之前尝试将以下内容添加到我的root htaccess文件中:
RewriteRule ^secureFolder(.*)$ - [L]
它不起作用;以下工作,但它违背了我的redirect.php
:
RewriteRule ^(.*)$ - [L]
欢迎任何想法!
更新日期:2013-10-31 14:00 ET
好吧,我已经使用HTTP身份验证处理了它。所以我使用PHP实现了一个简单的密码系统...
它是这样的:
在.htaccess
:
<IfModule mod_php5.c>
php_value auto_prepend_file /path/to/a/file/in/secureFolder
</IfModule>
<{1>}中的(对于PHP-FPM,如果您使用它):
.user.ini
在auto_prepend_file = /path/to/a/file/in/secureFolder
:
/path/to/a/file/in/secureFolder
在session_start();
/**
* Check if logged in
*/
if (!isset($_SESSION['adminLogin'])) {
include('/path/to/loginTemplate');
exit;
}
:
/path/to/loginTemplate
和<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = isset($_POST['username']) ? $_POST['username'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
if (
$username == 'username'
&& sha1($password) == 'somehashedvalueofyourpassword'
) {
$_SESSION['adminLogin'] = true;
header('refresh: 0');
} else {
$message = 'Incorrect login';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<?php if (isset($message)) echo $message ?>
<form action="" method="post">
<p>
<label>Username:</label>
<input type="text" name="username" />
</p>
<p>
<label>Password:</label>
<input type="password" name="password" />
</p>
<p>
<input type="submit" value="Login" />
</p>
</form>
</body>
</html>
:
logout.php
答案 0 :(得分:0)
您可以尝试:
<强> DOCUEMENT / htaccess的:强>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME}/index.php !-s
RewriteCond %{REQUEST_FILENAME}/index.html !-s
RewriteCond %{REQUEST_FILENAME}/index.htm !-s
RewriteRule ^(.*)$ redirect.php [L]
DOCUEMENT / folder / .htaccess:使用额外的RewriteEngine On
行:
RewriteEngine On
AuthUserFile / path / to / htpasswd AuthName EnterPassword AuthType Basic 需要用户adminUserName