我已經嘗試了這幾種方式,在這裏閱讀了很多示例和問題,仍然無法弄清楚它是否無法完成。
我想要的是強制使用特定的URL格式訪問某些文件和功能,並拒絕訪問(假404)到其他任何東西 - 甚至是現有的文件/目錄。.htaccess:隱藏現有的文件,但通過RewriteRule使用它們
這部分工作:
RewriteEngine On
RewriteRule ^([\w]+)$ /somefolder/index.php?page=$1 [L]
RewriteRule ^person/([\d]+) /somefolder/index.php?page=person&id=$1 [NC,L]
RewriteRule ^css/([\w]+\.css) /somefolder/css/$1 [NC,L]
RewriteRule ^images/([\d]{4}-[\d]{2}-[\d]{2}/[\d]+\.(gif|jpe?g)) /somefolder/images/$1 [NC,L]
以下行,然而,導致500內部服務器錯誤:
RewriteRule ^(.*)$ /somefolder/index.php?page=error [R=404]
我想,如果/somefolder/index.php(或任何其他文件/目錄可能存在也可能不存在)被訪問者請求,它應該返回404和錯誤頁面。我還計劃在稍後添加此功能:
ErrorDocument 404 /somefolder/index.php?page=error
.htaccess文件位於根目錄中。這是可行的嗎?
實例:
(頁面由用戶訪問和其他網頁鏈接到)
http://example.com/breakfast - >http://example.com/somefolder/index.php?page=breakfast
(由頁面中使用樣式表)
http://example.com/css/default.css - >http://example.com/somefolder/css/default.css
(圖像在所使用的文件)
http://example.com/images/2011-01-01/test.jpg - >http://example.com/somefolder/images/2011-01-01/test.jpg
(其他所有內容)
http://example.com/this/may.exist - > 404 +錯誤頁面
..這意味着如果有人試圖獲得http://example.com/somefolder/css/default.css(存在),他們將不會收到它。
「確切的URL格式」究竟如何?如果可能的話,描述中突出顯示與其餘URL的差異,指定哪些段是固定字符串,哪些段是可變的?這些信息對於更好地理解你想要的是很重要的。 –
「格式」部分之一是頁面必須在域部分之後使用頁面名稱訪問,例如http://example.com/thispage - 請求真實文件應導致錯誤(缺失)。 – LGT