vivion27 发表于 2017-1-9 10:01:11

Apache+Resin下如何写伪静态和301跳转

  目前网上大多数资料都是介绍如何在Apache中设置伪静态的,在Resin中很少提及,经过实践实现了这一点,现在做如下总结。
  1. Apache下如何写伪静态和301重定向JAVA中文站社区门户直接上代码(以本站域名为例):

[*]<IfModule mod_rewrite.c>
[*]    RewriteEngine On
[*]    # 叹号表示非,L表示最终结果,不再循环;NC是不区分大小写。
[*]    RewriteCond %{http_host} !^www.javatang.com
[*]    RewriteRule ^/(.*)$ http://www.javatang.com/$1
[*]    RewriteRule ^(.*)/index(.*)$ $1/index.html
[*]  </IfModule>

  2. Resin下如何写伪静态和301重定向
下的重定向也是由伪静态来写的,不过具体一些的话他同页面伪静态是分别由两个tag来完成的,页面伪静态由forward完成,301永久重定向由moved-permanently完成。
  _W+TW/Wf8{2s.Nz,c JAVA中文站社区门户(vK7|.b$kA C+{&i
  下面是具体的代码:
  9mA(w0vY

[*]<rewrite-dispatch>
[*]        <forward regexp="^(.*)/archives/([^/]+)/([^/]+).html$" target="$1/archives.jsp?q=$3&amp;a=$2" />
[*]        <!-- HTTP 301 moved -->
[*]        <moved-permanently regexp="^(.*)/index(.*)$" target="$1/index.html"/>
[*]    </rewrite-dispatch>

  这里需要特别注意的一点就是地址中的QueryString中&连接符需要使用&来代替,否则为出现错误。
  因为JavaEE默认的web.xml文件不支持上述属性,所以可以在你的站点WEB-INF目录下创建一个resin-web.xml文件,这个文件会被Resin看作为站点配置文件,然后在文件中写下如下内容:

[*]<web-app xmlns="http://caucho.com/ns/resin"
[*]         xmlns:resin="http://caucho.com/ns/resin/core">
[*]    <rewrite-dispatch>
[*]        <forward regexp="^(.*)/archives/([^/]+)/([^/]+).html$" target="$1/archives.jsp?q=$3&amp;a=$2" />
[*]        <!-- HTTP 301 moved -->
[*]        <moved-permanently regexp="^(.*)/index(.*)$" target="$1/index.html"/>
[*]    </rewrite-dispatch>
[*]</web-app>

  3. Apache+Resin组合的时候设置伪静态需要注意的地方
  二者组合中Resin主要完成Servlet所映射的地址为文件类型,而Apache完成其余部分,因此关于页面伪静态部分需要在Resin和Apache中同时设置才有效,否则有时候会出现404错误。但对于301永久重定向来说,如果是涉及域名部分的只需要在Apache中设置即可,如果二者都设置的时候会出现域名解析错误;如果涉及到页面部分的话需要在二者中都设置。
页: [1]
查看完整版本: Apache+Resin下如何写伪静态和301跳转