2016-05-05 5 views
1

ディレクトリへのすべての要求が静的リソースにリダイレクトされるようにmagnoliaを設定したいと思います。たとえば、URLが/campaign/(.*)に一致すると、リダイレクトせずに/static/campaign/に転送されます。 JCRではRegexpVirtualURIMappingを使ってMagnoliaの静的ディレクトリにマップする

/      => [no change] 
/campaign/    => /static/campaign/index.html 
/campaign/styles/all.css => /static/campaign/styles/all.css 

、私がすること/modules/pages/virtualURIMappingを設定しました:

<?xml version="1.0" encoding="UTF-8"?> 
<sv:node sv:name="virtualURIMapping" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <sv:property sv:name="jcr:primaryType" sv:type="Name"> 
    <sv:value>mgnl:content</sv:value> 
    </sv:property> 
    <sv:node sv:name="default"> 
    <sv:property sv:name="jcr:primaryType" sv:type="Name"> 
     <sv:value>mgnl:contentNode</sv:value> 
    </sv:property> 
    <sv:property sv:name="jcr:uuid" sv:type="String"> 
     <sv:value>c68cde34-eaaf-480d-b1fa-7ea98aa772b0</sv:value> 
    </sv:property> 
    <sv:property sv:name="class" sv:type="String"> 
     <sv:value>info.magnolia.cms.beans.config.RegexpVirtualURIMapping</sv:value> 
    </sv:property> 
    <sv:property sv:name="fromURI" sv:type="String"> 
     <sv:value>/campaign/([0-9A-Z]*)</sv:value> 
    </sv:property> 
    <sv:property sv:name="toURI" sv:type="String"> 
     <sv:value>forward:/static/campaign/$1</sv:value> 
    </sv:property> 
    </sv:node> 
</sv:node> 

私は、サーバーを再起動していると私は次の例外を受けています:

ERROR info.magnolia.rendering.engine.RenderingFilter - RepositoryException while reading Resource [/static] 
javax.jcr.PathNotFoundException: /static 

答えて

1

はのように思えます前方/静的はレンダリングフィルタに入ります。

0

Magnoliaが無視するものは、フィルタチェーン全体(認証も無視したい場合)または少なくともcmsのサブチェーンのいずれかでバイパスする必要がありますフィルタ。
MagnoliaがいくつかのURIを無視するようにするには、既に他の回答で述べたようにバイパスを設定する必要があります。

web.xml

<filter> 
    <filter-name>campaign</filter-name> 
    <filter-class>com.britishgas.contenthub.filters.CampaignRewriteFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>campaign</filter-name> 
    <url-pattern>/campaign/*</url-pattern> 
</filter-mapping> 

Rewrite Filter

HTH、

0


01月次の書き換えフィルタを作成する代わりに、JCRに追加することによってそれを解決

package com.example; 

import javax.servlet.*; 
import javax.servlet.http.HttpServletRequest; 
import java.io.IOException; 

public class CampaignRewriteFilter implements Filter { 

    private RequestDispatcher defaultRequestDispatcher; 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
     this.defaultRequestDispatcher = filterConfig.getServletContext().getNamedDispatcher("default"); 
    } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     HttpServletRequest req = (HttpServletRequest) request; 
     String uri = req.getRequestURI().replaceFirst("/campaign/", "/static/campaign/"); 
     RequestDispatcher dispatcher = request.getRequestDispatcher(uri); 
     dispatcher.forward(request, response); 
    } 

    @Override 
    public void destroy() { 

    } 
} 
関連する問題