2011-10-27 51 views
0

我使用Diazo(以前稱爲XDV)來使用Apache和mod_transform_html爲主題的一些內部網站。我希望我可以通過把TransformSet指令內Location的指令,例如使用多個不同的主題:Diazo + Apache + mod_transform:主題`/`與其他路徑不同

<Location /blog/> 
    TransformSet /themes/blog.xsl 
</Location> 

<Location /> 
    TransformSet /themes/main.xsl 
</Location> 

不幸的是,它看起來像TransformSet指令爲/總是優先。我已經解決了這個的時間通過移動內容從//main和添加是:

RewriteRule ^/$ /main/ [R] 

<Location /main/> 
    TransformSet /themes/main.xsl 
</Location> 

這工作,但我寧願能夠舉辦此類內容/紮根。

所以...有沒有辦法來覆蓋適用於/的轉換?這種事情似乎適用於其他Apache配置指令(例如,ProxyPass)。

回答

0

我從來沒有抽時間去整理爲mod_transform的paramater支持,但如果你可以根據頁面內容主題之間選擇,那麼你可以使用類似:

<rules css:if-content="#blog"> 
    <theme href="blog.html"/> 
    ... 
</rules> 
<rules if="not(//*[@id='blog']"> 
    <theme href="main.html"/> 
    ... 
</rules> 

這提醒我,如果我要補充一個非內容,所以你可以在那裏使用一個CSS選擇器。有關詳細信息,請參見:http://diazo.org/advanced.html#multiple-conditional-themes

可能更容易雖然只是用LocationMatch替代根主題,是這樣的:

<LocationMatch "/(?!blog)"> 
    TransformSet /themes/main.xsl 
</LocationMatch> 

這將避免申請相同的請求都TransformSet指令。

+0

我實際上已經嘗試了'if-content'指令,但看起來事情最終會變得混亂。將轉換保存在單獨的文件中可以更容易管理。我會嘗試'LocationMatch'解決方案。 – larsks

+0

這些條件似乎適用於分享許多規則的密切相關的主題,例如,一個標準頁面和一個首頁。隨着完全無關的網頁,它確實變得混亂。 Deliverance試圖用'頁面類'(http://packages.python.org/Deliverance/configuration.html#match-and-page-classes)來解決這個問題,也許我們需要類似於重氮的東西,以及轉化爲。 –

+0

事實上,子路徑上的「TransformSet」不會覆蓋'/'一般的Apache事物的設置?或者這可以在'mod_transform'中修復? – larsks