.htaccess 文件可以從外部文件中讀取“變數”嗎?
我使用了一個單獨的文件
software_version
,該文件使用 SSI 包含在 html 文件中。因此訪問者可以在下載和其他一些頁面上查看目前的軟體版本。還有一個下載最新版本軟體的 URL:
redirect /download/MySoftwareSetup.exe https://download.somedomain.com/MySoftwareSetup_2018.1.0.0.exe
我有一個更新文件的腳本
software_version
,並且 HTML 文件顯示正確的版本。但是我必須手動編輯
.htaccess
文件以使重定向到最新版本的工作正常。可以
.htaccess
從外部文件中讀取一些變數並在處理該文件時替換它嗎?類似於以下內容:
redirect /download/MySoftwareSetup.exe https://download.somedomain.com/MySoftwareSetup_${file:software_version}.exe
在 Apache 2.4 上,您可以在 mod_rewrite 指令中使用 Apache 表達式
RewriteCond
從文件中讀取值並將其用作重定向目標的一部分。例如:
假設該文件
software_version
也位於/download
子目錄中並包含2018.1.0.0
表示版本字元串的形式的字元串,那麼在您的根.htaccess
文件中,您可以執行以下操作:RewriteEngine On RewriteCond expr "file('%{DOCUMENT_ROOT}/download/software_version') =~ /([\d.]+)/" RewriteRule ^download/(MySoftwareSetup)\.exe$ https://download.somedomain.com/$1_%1.exe [R,L]
以上將在外部將表單的請求重定向
/download/MySoftwareSetup.exe
到https://download.somedomain.com/MySoftwareSetup_2018.1.0.0.exe
(使用從外部文件中讀取的任何版本字元串)。反向引用僅保存請求 URL 中的
$1
“MySoftwareSetup”字元串以保存重複。正則表達式
/([\d.]+)/
僅從讀取文件中擷取版本字元串。因此,即使存在無關字元(例如換行符),也不會擷取這些字元。這儲存在%1
反向引用中並在RewriteRule
替換字元串中用於構造文件名。我使用了一個單獨的文件
software_version
,該文件使用 SSI 包含在 html 文件中。儘管如果您已經在使用 SSI,那麼您大概可以以相同的方式修改 HTML 錨以直接連結到正確版本的文件?