WordPress規則也有例外

WordPress的Apache

WordPress的ApacheWordPress在博客平台上邁出了重要的一步,使之更接近具有修訂跟踪,對自定義菜單的更多支持以及對我來說最引人入勝的功能的全面的內容管理系統,以及對域映射的多站點支持。

如果您不是內容管理系統迷,那也沒關係。 你可以跳過這篇文章。 但是對於我的技術極客、代碼負責人和 apache 涉獵者,我想分享一些有趣的東西,一些很酷的東西。

多站點功能允許您通過一個 WordPress 安裝運行任意數量的 WordPress 網站。 如果您管理多個站點,這很好,因為您可以安裝一組經過批准的主題和小部件,並為您的客戶端站點激活它們。 映射您的域有一些技術障礙,但這個過程並不困難。

我確定的問題領域之一是主題定制。 由於可以將主題提供給多個網站使用,因此您對主題進行的任何自定義設置也會影響在多站點安裝中使用該主題的任何其他站點。 解決此問題的方法是在開始自定義之前複製主題,並明確為其設計樣式的客戶站點命名該主題。

另一個有趣的問題是Apache服務器上的.htaccess文件中發生了什麼。 WordPress需要在逐個博客的基礎上重寫路徑,並使用重寫規則和php文件來完成此操作。

WordPress使用以下重寫規則:

RewriteRule ^([_ 0-9a-zA-Z-] + /)?files /(.+)wp-includes / ms-files.php?file = $ 2 [L]

本質上,mysite.com/files/directory 子目錄中的任何內容都會被重寫到 mysite.com/files/wp-includes/myblogfolderpath ......這就是它變得有趣的地方。 如果您確實需要在服務器上有一個 mysite.com/files/myfolder/myimage.jpg 文件,會發生什麼? 您收到 404 錯誤,這就是發生的情況。 Apache 重寫規則生效並更改路徑。

當然,您可能永遠不會遇到這個問題,但是我做到了。 我有一個網站,該網站需要使用其他網站上的javascript小部件,並且需要在mysite.com/files/Images/myfile中找到圖形。 由於無法在主機站點上更改文件,因此我需要找出一種在服務器上執行此操作的方法。 一種簡單的解決方案是創建一個重寫條件,使特定文件例外。

這裡是解決方案:

RewriteCond%{REQUEST_URI}!/?files / Image / file1.jpg $
RewriteCond%{REQUEST_URI}!/?files / Image / file2.jpg $
RewriteRule ^([_ 0-9a-zA-Z-] + /)?files /(.+)wp-includes / ms-files.php?file = $ 2 [L]

重寫條件必須放在重寫規則之前,否則這個技巧將不起作用。 如果您遇到類似的問題,為您自己的目的修改此條件應該很容易。 該解決方案對我很有用,允許我替換自定義圖形而不是不適合我的設計的不太理想的替代文本。 希望它也適用於您。

你覺得呢?

本網站使用Akismet來減少垃圾郵件。 了解您的評論如何處理.