2015-12-24 45 views
1

我試圖如果用戶導航到URL/DIR/test.ext做(每次)的.htaccess重定向如果文件存在,那麼重定向回

  • 檢查是否存在/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:趕上1S用戶從$ 1頁來了以後到期的重定向到URL,檢查之前未訪問過,setCookie方法,重定向回 - 我敢肯定有一個誤差這種機制 -

與.htaccess中的問題是,如果該文件不存在,它只會工作,如果我將其更改爲(-f)我會得到Internal Server Error因爲它」(-f規則!)會進入無限重定向循環。

+0

什麼是這個完整的目標是什麼?我認爲你正嘗試將用戶從不存在/dir/doesnotexist.ext這樣的地方重定向到你的索引,但第二次重定向沒有意義。爲什麼一旦他們到達index.php,他們又會重定向它們?我會爲此使用404頁。您可以設置一個特殊的404錯誤頁面,並在其中添加重定向。你也可以設置一個你的索引檢查的會話變量,如果找到了,它們將不能訪問你的索引,直到會話被再次銷燬。你能提供更多信息嗎? –

+0

@TylerRadlick如果文件dosn't不存在,我不會嘗試重定向。我試圖重定向到index.php只有當文件存在。用戶訪問url/a.php?b = c - >檢查是否存在a.php - >重定向到index.php - >重定向回a.php?b = c。謝謝 – user2676847

回答

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