想象這個條件:想如果擴展是寫在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]
任何幫助將不勝感激,謝謝提前。
檢查的Symfony2的htaccess的,這將幫助你多少 – Bobot