Diazo + Apache + mod_transform: тема `/` отличается от других путей - PullRequest
0 голосов
/ 27 октября 2011

Я использую Diazo (ранее XDV) для создания тематики некоторых внутренних веб-сайтов, используя Apache и mod_transform_html .Я надеялся, что смогу использовать несколько различных тем, поместив директивы TransformSet в директивы Location, например:

<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).

1 Ответ

0 голосов
/ 28 октября 2011

Я никогда не удосужился закончить поддержку paramater для mod_transform, но если вы можете выбирать между темами на основе содержимого страницы, то вы можете использовать что-то вроде:

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

Это напоминает мне, что я должен добавить if-not-content, чтобы вы могли использовать там css-селектор. Для получения дополнительной информации см .: http://diazo.org/advanced.html#multiple-conditional-themes

Возможно, будет проще использовать LocationMatch вместо корневой темы, например:

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

Это позволит избежать применения обеих директив TransformSet к одному и тому же запросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...