![](/img/trans.png)
[英]WordPress Permalink won't save (.htaccess, httpd.conf correct)
[英]How to convert specific htaccess to global httpd.conf
我怎樣才能轉換
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
在全局 httpd.conf 配置中。 一個直接的問題是 httpd.conf 中不允許有 RewriteBase 規則。 但是要知道如何重寫它,可能有助於理解這些規則的作用。
RewriteBase / 做什么? 這是否意味着它將接受任何傳入的 URL 並刪除服務器名稱和 URL 中的最后一項之間的所有內容並將其刪除? 即http://example.com/dir1/dir2/file變成http://example.com/file ? 我認為第二條規則意味着像http://example.com/index.php這樣的 URL 保持不變。
第三行和第四行檢查請求的文件名是否作為文件或目錄存在,如果存在,則忽略以下重寫規則。
在最后一行中,重寫規則令人困惑,它似乎想要匹配任何單個字符並且只是單個字符(為什么不是 ^(.*)$),如果以某種方式匹配,則將整行重寫為/index.php which then seems to somehow know how to process the URL of http://example.com/index.php as it still contains what was originally submitted.
RewriteBase :你可以在 httpd.conf 中有 RewriteBase。 就在<Directory>
塊下。 看文檔,有例子。
這是在目錄結構某處的 .htaccess 文件中。 它強制重寫引擎從/
而不是從找到 .htaccess 文件的目錄開始。
第二行:如果它不是現有文件,您是正確的。
第三和第四行:如果它不是現有目錄,您是正確的。
最后一行:如果請求不是現有文件,也不是現有目錄,並且長度為 1 個字符 ==> 無論字符是什么(由.匹配),返回 index.php。
我同意你的看法,它應該是^(.*)$
來匹配任何不是現有文件目錄的東西。 只有一個點是相當嚴格的,盡管在您的特定站點上可能有其背后的邏輯。
的詳細信息.
.
: 匹配任何字符.+
:匹配 1 個或多個。 所以任意數量的字符,不包括 0 個字符。.*
:匹配 0 個或更多。 所以任意數量的字符,包括 0 個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.