2015-05-14 57 views
0

想象這個條件:想如果擴展是寫在REQUEST_URI重定向到一個錯誤頁面

我有一個網站,我想刪除擴展,我想用戶重定向到一個錯誤頁面,如果有任何延伸名(.php,.asp的,html的,等等)在REQUEST_URI變量, 我做了這樣的:

RewriteRule ^([a-zA-Z]{3,8})/?$ $1.php [L] 

所以當我嘗試打開example.com/blog/,它增加了擴展到所請求的SCRIPT_NAME,但根據服務器端變量$ _SERVER,REQUEST_URI沒有.php擴展名,

'REQUEST_URI'=>字符串 '/博客'(長度= 5)

'SCRIPT_NAME'=>字符串 '/blog.php'(長度= 9)

但是當我嘗試打開example.com/blog.php中,PHP擴展是內部REQUEST_URI,

'REQUEST_URI'=>字符串 '/blog.php'(長度= 9)

'SCRIPT_NAME'= > string'/blog.php'(len gth = 9)

我想用RewriteCond來檢查它是否爲真(通過檢查是否有一個點'。'或其後的任何東西),如果這是真的,我想用戶重定向到一個錯誤頁面,我做了如下圖所示:

RewriteCond %{REQUEST_URI} \\.[a-zA-Z_-]*/? 

RewriteRule ".*" example.com/err [R] 

但增加這兩條線到我的htaccess之前,我是否不寫裏面的網址後延,它重定向我的錯誤頁。 顯然REQUEST_URI確實包含擴展兩次,雖然服務器說不同。 這是我的htaccess文件:

RewriteRule ^([a-zA-Z]+)/?$ $1.php [L] 

RewriteCond "%{REQUEST_URI}" "\\.[a-zA-Z_-]*/?$" 

RewriteRule ([a-zA-Z_-]*) localhost/example/err [R] 

任何幫助將不勝感激,謝謝提前。

+0

檢查的Symfony2的htaccess的,這將幫助你多少 – Bobot

回答

0

嗯,我可以使用,而不是REQUEST_URI THE_REQUEST變量, 但奇怪的是REQUEST_URI沒有工作, 這裏是在任何情況下,這個問題遇到的解決方案實現我的目標。 注意美元符號不應該插入到RewriteCond中,因爲擴展名不會在THE_REQUEST變量的末尾。

的RewriteCond%{THE_REQUEST} \。(PHP | ASP | ASPX |全文| HTM)

重寫規則* example.com/err [R]

相關問題