WordPress規則也有例外

WordPress的Apache

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

如果您不是內容管理系統的迷,那就可以了。 您可以跳過本文。 但是對於我的技術極客,代碼頭和apbble愛好者來說,我想分享一些有趣的東西。

多站點是一項功能,允許您通過單個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來減少垃圾郵件。 了解您的評論如何處理.