我有一個用 PHP(Codeigniter 框架)自己構建的 CMS。我在想為什么每次 PHP 都必須處理所有代碼才能回應頁面。因此,我將創建完整的 HTML 頁面并在用戶請求時提供它們。
這就是為什么我需要僅當該檔案存在時才將 URL 重寫為特定檔案。為此,我需要使用正則運算式捕獲的組,因為我想為該檔案夾和子檔案夾中的所有檔案構建它。
例如,我想將一堆 HTML 頁面放在 %{DOCUMENT_ROOT}/out 上,并希望通過重寫規則直接訪問它們。
例如,如果 URL 是這樣的:
htaaatps://www.dsaoidashd.com/services/development-of-desktop-applications
我想看看以下位置:
%{DOCUMENT_ROOT}/out/services
為了
development-of-desktop-applications.html
如果它存在,我想將它回傳給客戶端瀏覽器而不繼續。
當然,如果我還有更多這樣的關卡:
htaaatps://www.dsaoidashd.com/services/development/of-desktop-applications
然后我需要檢查這個位置:
%{DOCUMENT_ROOT}/out/services/development
為了
of-desktop-applications.html
檔案并將其回傳給呼叫瀏覽器。
我試過
我知道我必須使用 RewriteCond 來檢查檔案是否存在,但是如何將它傳遞給 RewriteCond 正則運算式捕獲的組,以便我可以根據提供的 URL 檢查它們?
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/out/$1.html -f
RewriteRule ^.*$ /$1.html [L]
uj5u.com熱心網友回復:
你RewriteCond幾乎是正確的,但你必須$1在一個小組中捕獲,RewriteRule你的目標也需要是out/$1.html。
您可以在站點根目錄 .htaccess 中使用此重寫規則:
RewriteEngine On
# To internally forward /dir/file to /out/dir/file.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/out/$1.html -f
RewriteRule ^(. ?)/?$ out/$1.html [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459214.html
