Php .htaccess重定向如果文件存在,则重定向回
如果用户导航到url/dir/test.ext(每次),我将尝试做什么Php .htaccess重定向如果文件存在,则重定向回,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,如果用户导航到url/dir/test.ext(每次),我将尝试做什么 检查/dir/test.ext是否存在 如果存在,将其重定向到url/index.php 然后从index.php将其重定向回/var/test.ext 到目前为止,我所尝试的: .hAccess: 重新编写引擎打开 重写cond%{REQUEST_FILENAME}-D 重写cond%{REQUEST_FILENAME}-F 重写规则^([^?]*)$/index.php?路径=$1[NC,L,QSA] php:捕获重
- 检查/dir/test.ext是否存在
- 如果存在,将其重定向到url/index.php
- 然后从index.php将其重定向回/var/test.ext
重新编写引擎打开
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^([^?]*)$/index.php?路径=$1[NC,L,QSA]
php:捕获重定向到url,检查之前是否未访问,设置用户从$1页面返回1s后过期的cookie,重定向回-我确信此机制存在错误-
htaccess的问题是,只有当文件不存在时,.htaccess才会工作(!-f规则),如果我将其更改为(-f),则会出现内部服务器错误,因为它将进入无限重定向循环。404页面代码:
<?php $_SESSION['notallowed'] = 'notallowed';
header("location:http://dir/index.php");
?>
当用户点击一个不存在的目录或文件,设置一个会话并将它们重定向到索引时,此代码就会运行
index.php代码
<?php if ($_SESSION['notallowed']){ header("location:http://dir/var/test.ext");?>
此代码检查会话,如果找到,则重定向到/var/test.ext404页面代码:
<?php $_SESSION['notallowed'] = 'notallowed';
header("location:http://dir/index.php");
?>
当用户点击一个不存在的目录或文件,设置一个会话并将它们重定向到索引时,此代码就会运行
index.php代码
<?php if ($_SESSION['notallowed']){ header("location:http://dir/var/test.ext");?>
此代码检查会话,如果找到,则重定向到/var/test.ext此操作的全部目标是什么?我认为您正在尝试将用户从一个不存在的位置(如/dir/doesnotexist.ext)重定向到您的索引,但是第二个重定向没有意义。当它们到达index.php时,为什么要再次重定向它们?我会用404页来做这个。您可以设置一个带有重定向的特殊404错误页面。您还可以设置一个会话变量,索引将检查该变量,如果找到该变量,则转发该变量,但在该会话再次销毁之前,它们将无法访问您的索引。你能提供更多信息吗?@TylerRadlick如果文件不存在,我不会尝试重定向。只有当文件存在时,我才尝试重定向到index.php。用户访问url/a.php?b=c->检查a.php是否存在->重定向到index.php->重定向回a.php?b=c。谢谢,这件事的全部目标是什么?我认为您正在尝试将用户从一个不存在的位置(如/dir/doesnotexist.ext)重定向到您的索引,但是第二个重定向没有意义。当它们到达index.php时,为什么要再次重定向它们?我会用404页来做这个。您可以设置一个带有重定向的特殊404错误页面。您还可以设置一个会话变量,索引将检查该变量,如果找到该变量,则转发该变量,但在该会话再次销毁之前,它们将无法访问您的索引。你能提供更多信息吗?@TylerRadlick如果文件不存在,我不会尝试重定向。只有当文件存在时,我才尝试重定向到index.php。用户访问url/a.php?b=c->检查a.php是否存在->重定向到index.php->重定向回a.php?b=c。谢谢