當用戶使用不存在的 url 時,我需要使用 .htaccess 從特定目錄加載索引文件。這是我的文件夾結構:root/realdirectory/virtualdirectory/virtualproducturl我的索引文件位于 root/realdirectory還有一些使任務更加復雜的東西:如果用戶訪問,則必須加載 root/realdirectory/index.php:-root/realdirectory/virtualdirectory/virtualproducturl or
-root/realdirectory/virtualdirectory/'virtualdirectory' 是我的產品類別,當用戶只訪問類別 url 時,我想向他展示一些來自 root/realdirectory/index.php 的信息提前謝謝
1 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
聽起來很簡單:當一個請求沒有被解析到一個現有的文件或文件夾時,然后在內部將它重寫為一個“索引文檔”:
RewriteEngine on RewriteCond %{REQUEST_URI} !-f RewriteCond %{REQUEST_URI} !-d RewriteRule ^ /index.php [END]
如果您使用上述規則收到內部服務器錯誤(http 狀態 500),那么您可能操作的是非常舊版本的 apache http 服務器。在這種情況下,您將在您的 http 服務器錯誤日志文件中看到一個不受支持的[END]
標志的明確提示。您可以嘗試升級或使用舊[L]
標志,在這種情況下它可能會工作相同,盡管這在一定程度上取決于您的設置。
此實現同樣適用于 http 服務器主機配置或分布式配置文件(“.htaccess”文件)。顯然重寫模塊需要在http服務器內部加載并在http主機中啟用。如果您使用分布式配置文件,您需要注意它的解釋在主機配置中完全啟用并且它位于主機的文件夾中DOCUMENT_ROOT
。
還有一條一般性的評論:您應該始終更喜歡將此類規則放在 http 服務器主機配置中,而不是使用分布式配置文件(“.htaccess”)。那些分布式配置文件增加了復雜性,通常是意外行為的原因,難以調試并且它們確實減慢了 http 服務器的速度。它們僅在您無法訪問真正的 http 服務器主機配置(閱讀:非常便宜的服務提供商)或堅持編寫自己的規則(這是一個明顯的安全噩夢)的應用程序的情況下作為最后的選擇提供。
- 1 回答
- 0 關注
- 114 瀏覽
添加回答
舉報
0/150
提交
取消