2017-09-22 17 views
1

我的.htaccess文件是一個行的.htaccess重定向404但要記住的錯誤作爲一個url變量

ErrorDocument 404 https://example.com/folder/404.php?url=%{HTTP_REFERER}

如果我去https://example.com/folder/derp.php(一個不存在的頁面)

它從字面上帶我到:

https://example.com/folder/404.php?url=% {HTTP_REFERER}

,而應該帶我去:

https://example.com/folder/404.php?url=https://example.com/folder/derp.php

爲什麼%{HTTP_REFERER}被視爲一個字符串?


RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^http://www.example.com/folder/page.php.* 
RewriteRule .* https://example.com/folder/404.php?url=%{HTTP_REFERER} 

試圖使HTTP_REFERER是空白

回答

2

%{HTTP_REFERER}mod_rewrite變量不能在ErrorDocument使用。

如果您想通過%{HTTP_REFERER},則必須使用mod_rewrite規則而不是ErrorDocument

另一種方法是在所有不使用%{HTTP_REFERER}和使用略有不同的ErrorDocument指令,因爲這樣的:

ErrorDocument 404 /folder/404.php 

,並得到原404使用造成URI:

$_SERVER["REQUEST_URI"] 
+0

試過替代早期的'回聲$ _SERVER [「REQUEST_URI」]是空的! :/ –

+0

這將工作'ErrorDocument 404 /文件夾/ 404.php',因爲我建議。您的問題中的'404'處理程序將無法正常工作,因爲這將完全重定向。 – anubhava