重定向到新目錄的.htaccess似乎並不是最好的想法,因爲此時需要至少8個不同的目錄(和8個不同的重寫規則)才能將20000個文件分割成最多包含2500個文件的目錄。所以,明天將需要9個目錄,而不是提及使用重寫規則來選擇轉到每個目錄的文件可能變得非常困難。
我想最好的選擇是在PHP腳本中處理該路由,使用數組或任何需要的路由。
你可以重定向轉到/images
目錄PHP腳本中的根,例如,這反過來又重定向到相應的目錄根據傳遞給腳本
像這樣的參數的一切:
Options +FollowSymlinks
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_URI} !handler.php
RewriteCond %{REQUEST_URI} ^/images/([^\.]+)\.([\w]+)/? [NC]
RewriteRule .* handler.php?name=%1&ext=%2 [L]
地圖默默:
http://example.com/images/filename.ext
帶或不帶斜線。
要:
http://example.com/handler.php?name=filename&type=ext
只傳遞一個參數到腳本,而不是或名稱和擴展,只需更換這一個重寫規則:
RewriteRule .* handler.php?%1.%2 [L]
這是隻是一個例子。腳本handler
可以具有任何名稱,如果使用的話,則可以使用密鑰name
和type
。
必須保留傳入的URL結構才能使規則集工作:URL內的最後一個字符串必須是該文件。
對於永久和可見重定向,請將[L]
替換爲[R=301,L]
。
這是有道理的,我看到這可以工作 - 我可以試試這個。我只關心效率問題,因爲處理程序可能會在單個頁面載入中被調用數百次。不過,我還是看到了能夠在處理程序文件中輕鬆更改規則的價值。 謝謝! – dragon1234
@Peter PHP通常比mod_rewrite規則更快,但在這種情況下,一堆規則太多而無法檢查,所以對性能的影響應該更小,我猜。 –
你好@faa, 感謝您的全力幫助。 我該如何處理handler.php?我嘗試了回聲和回報,並沒有真正的運氣。 ' ' – dragon1234