我注意到在Drupal中,如果你添加.php到任何頁面的url欄,它會給你一條404條消息;啓用乾淨的網址。該頁面顯然是一個.php文件,但是.htaccess會阻止用戶在url欄中篡改URL擴展名。你怎麼能用.htaccess來做到這一點。目前我省略了文件擴展名,但也想添加該功能。謝謝。
此外,這個問題不涉及Drupal。我只提到了Drupal的例子。如何設置.htaccess以顯示404不允許的URL?
0
A
回答
0
我不知道Drupal,但在通常的PHP應用程序中,每個請求都被路由到前端控制器,後者執行一些驗證並在出錯時引發404。
easy-peasy
2
只是因爲一個文件包含PHP代碼並不意味着它必須有.php
擴展;當你通過互聯網訪問文件時更是如此。
當你請求http://mysite.com/page和你使用的是.htaccess
像Drupal的,該請求被轉發到index.php?q=page
於是Drupal將檢查它的匹配page
路徑數據庫。如果它找到一個,它會顯示該頁面的內容,如果沒有,它會(正確)給出一個404.
如果您希望所有頁面都可以通過PHP擴展訪問,您可以在您的.htaccess
文件從何處PHP文件不實際的任何請求刪除.php
存在:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php $1 [NC]
請記住,雖然這增加了對您網站的訪問者零額外的價值(事實上,他們必須記住文件擴展名的以及頁面的路徑),並且它公開了正在使用的服務器端技術,因此潛在的攻擊者可能會爲他完成一些工作。
希望有所幫助。
1
請問您能否更深入地解釋一下。它如何將內容重定向到現有頁面?這是常見的做法/典型的做事方式?
是的,這是一個非常普遍的做法,大多數框架和CMS都使用它。
原理很簡單:您設置您的.htaccess
,以便每個與實際文件或目錄不匹配的請求都將被重定向到前端控制器,通常是應用程序根目錄中的index.php
。該前端控制器通過分析URL並調用必要的操作來處理請求。
通過這種方式,您可以將重寫規則最小化爲一個,並且您可以提供自定義的404頁面。
相關問題
- 1. .htaccess不允許$ _POST變量與ErrorDocument 404
- 2. .htaccess:允許特定的URL
- 3. 如何設置.htaccess以允許在網址中使用shebang
- 4. mod_rewrite的URL不允許除了在.htaccess
- 5. htaccess的 - 重寫不允許在URL
- 6. 允許'和。通過URL .htaccess
- 7. htaccess mod重寫url顯示404
- 8. 如何允許htaccess的
- 9. 如何重構htaccess以允許主頁?
- 10. .htaccess刪除擴展名,但允許404(如果不存在)
- 11. 允許htaccess的
- 12. 如何用`.htaccess`重寫URL,它不允許直接鏈接?
- 13. .htaccess - 白名單允許的URL
- 14. 當前位置Permission Alertview在顯示不允許後不顯示
- 15. 404頁面不會顯示/不.htaccess Wordpress
- 16. 設置.conf文件以允許URL中的「通配符」
- 17. 的.htaccess允許文件下載,如果條件設置
- 18. .htaccess 404頁未顯示
- 19. Htaccess,重寫和顯示404
- 20. 爲404錯誤設置.htaccess
- 21. 允許某些URL與htaccess授權?
- 22. .htaccess允許url包含單詞
- 23. .htaccess允許.html
- 24. 允許在.htaccess
- 25. 的.htaccess允許@fontface
- 26. 如何允許.htaccess密碼保護的url類型?
- 27. 的.htaccess ID = __需要修改htaccess的,以允許任何id號
- 28. 顯示允許應用程序訪問設備的位置
- 29. 如何允許codeigniter查看我的.htaccess?
- 30. 驗證不允許的URL
我將重新表述:如何防止用戶編寫不存在的URL?你知道答案。 –
@OZ_閱讀題體通常有助於理解這個問題。 –
Drupal URLs不指向物理PHP文件,它們是重定向到處理請求的'index.php'的虛擬URL。因此,在URL中添加'.php'將會給404,因爲該URL根本不存在。 –