.htaccess重定向,如果文件存在,则重定向回

时间:2015-12-24 20:59:57

标签: php .htaccess mod-rewrite

如果用户导航到url / dir / test.ext(每次),我正在尝试做什么

  • 检查/dir/test.ext是否存在
  • 如果存在,则将其重定向到url / index.php
  • 然后从index.php将其重定向回/var/test.ext

到目前为止我尝试过:

.htacess: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^?]*)$ /index.php?path=$1 [NC,L,QSA]

index.php:抓住重定向到url,检查之前是否没有访问过,setcookie在1s后过期,用户来自$ 1页面,重定向回来 - 我确定这个机制有错误 -

.htaccess的问题在于,只有当文件不存在时才会起作用(!-f规则),如果我将其更改为(-f)我会得到Internal Server Error因为它' ll进入无限重定向循环。

1 个答案:

答案 0 :(得分:0)

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.ext