apache和tomcat相结合使用实现伪静态,同时把静态文件从工程里分离开

2024-09-04 17:08

本文主要是介绍apache和tomcat相结合使用实现伪静态,同时把静态文件从工程里分离开,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转:http://blog.csdn.net/leidengyan/article/details/6069630


由于可能我们做网站的时候经常想把静态文件和动态文件相分离,比如将帮助页面的静态页面放到一些文件夹下,而不是放在工程,同时还有一些人希望能够实现伪静态功能,

下面我介绍tomcat和apache相结合,实现伪静态,静态文件和动态文件相分离的配置:
一、 首先安装tomcat6.0,tomcat5.5也可以,安装好了以后进入 安装tomcat路径/conf文件夹,编辑该文件夹下的文件server.xml。
找到
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
确定你待会ajp跳转时的tomcat端口号。我的tomcat ajp协议的端口是8009。
二、安装apache2.2,我之前试过apache2.0,发现apache2.0没有ajp跳转的功能,只能用proxy代理访问。
我的apache2.0原来的访问代码如下:
ProxyPass / http://127.0.0.1:8099/
ProxyPassReverse / http://127.0.0.1:8099/
这样跳转的缺点就是到tomcat容器时java获得的连接是127.0.0.1:8099,而不是域名。还有报错时会暴露出tomcat的访问端口,对安全造成一定的影响。
回到主题,安装完apache2.2以后。进入安装apache的路径/conf文件夹下,

三、配置http.conf文件

编辑httpd.conf文件:

 1 找到以下两行,将前面的#号去掉,这个是加载ajp跳转的功能
 #LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
2 找到以下代码,将前面的#去掉,这个是加载rewrite模块的功能
#LoadModule rewrite_module modules/mod_rewrite.so
3 找到以下代码,将前面的#去掉:
#Include conf/extra/httpd-vhosts.conf


四、配置httpd-vhosts文件

然后打开安装apache的路径/conf/extra文件夹,编辑httpd-vhosts.conf文件
在文件中加入你的域名,比如:
<VirtualHost *:80>
    ServerName www.域名.com
    DocumentRoot "D:/www/域名"
  ServerAdmin service@域名.com
    ErrorLog "logs/www.域名.com-error_log"
    CustomLog "logs/www.域名.com-access_log" common
    Include conf/extra/rewrite-域名.conf
</VirtualHost>
ServerName是你的域名
DocumentRoot是你的静态文件存放的路径。
然后在这个文件夹下创建一个文件叫rewrite-域名.conf,编辑这个文件写上你的跳转规则:
如:
RewriteEngine on
RewriteLog "logs/www.talentonline.com-rewrite.log"
RewriteLogLevel 9
RewriteRule ^/([/S]+)/.do$ ajp://127.0.0.1:8009/$1/.do [P,L]
RewriteRule ^/([/S]+)/.do;jsessionid=([/S]+)$ ajp://127.0.0.1:8009/$1/.do;jsessionid=$2 [P,L]

RewriteRule /(/S+)/.js$ ajp://127.0.0.1:8009/$1/.js [P]
RewriteRule /(/S+)/.css$ ajp://127.0.0.1:8009/$1/.css [P]
RewriteRule /(/S+)/.gif$ ajp://127.0.0.1:8009/$1/.gif [P]
RewriteRule /(/S+)/.jpg$ ajp://127.0.0.1:8009/$1/.jpg [P]
##以下你可以写你自己的rewrite跳转规则
这样就可以实现静态页面从工程分离出去,放到单独的文件夹下,这样不但可以缩小工程的大小,还能加快访问速度。
赶快试一下吧。

五、附

 以下附上我的httpd-vhosts.conf和rewrite-talentonline.conf代码,供大家参考:

httpd-vhosts.conf(D:\Apache2.2\conf\extra\httpd-vhosts.conf):

[html] view plaincopy
  1. NameVirtualHost *:80  
  2. ####以下是代理的模式,即www.soogifts.com这个域名下的所有连接都会跳到tomcat服务器下去解析(ajp://127.0.0.1:8009/)##############  
  3. <VirtualHost *:80>  
  4.   ServerName www.soogifts.com  
  5.     ServerAlias soogifts.com  
  6.     DocumentRoot "D:/www/ROOT/"  
  7.   ServerAdmin service@soogifts.com  
  8.     ErrorLog "logs/www.soogifts.com-error_log"  
  9.     CustomLog "logs/www.soogifts.com-access_log" common  
  10.       
  11.     ProxyPass / ajp://127.0.0.1:8009/  
  12.     ProxyPassReverse / ajp://127.0.0.1:8009/  
  13. </VirtualHost>  
  14. ####以下是静态资源的转发,image.soogifts.com这个域名下的所有内容都会到D:/www/soogiftsImg/这个目录下去找##############  
  15. <VirtualHost *:80>  
  16.     ServerName image.soogifts.com  
  17.     DocumentRoot "D:/www/soogiftsImg/"  
  18.     ServerAdmin service@soogifts.com  
  19.     ErrorLog "logs/image.soogifts.com-error_log"  
  20.     CustomLog "logs/image.soogifts.com-access_log" common  
  21. </VirtualHost>  
  22.   
  23. ##############以下是包含rewrite规则的写法,rewrite规则在rewrite-talentonline.conf这个文件当中######################  
  24. <VirtualHost *:80>  
  25.     ServerName www.thetalentonline.com  
  26.     DirectoryIndex index.shtml index.html  
  27.     DocumentRoot "D:/develop/ws_dream/talent/WebRoot/html"  
  28.   ServerAdmin service@thetalentonline.com  
  29.     ErrorLog "logs/www.thetalentonline.com-error_log"  
  30.     CustomLog "logs/www.thetalentonline.com-access_log" common  
  31.     Include conf/extra/rewrite-talentonline.conf  
  32. </VirtualHost>  

rewrite-talentonline.conf(D:\Apache2.2\conf\extra\rewrite-talentonline.conf):

[html] view plaincopy
  1. RewriteEngine on  
  2. RewriteLog "logs/www.talentonline.cn-rewrite.log"  
  3. RewriteLogLevel 9  
  4. RewriteRule ^/([\S]+)\.jsp$ ajp://127.0.0.1:8009/$1\.jsp [P,L]  
  5. RewriteRule ^/([\S]+)\.jsp;jsessionid=([\S]+)$ ajp://127.0.0.1:8009/$1\.jsp;jsessionid=$2 [P,L]  
  6. RewriteRule ^/([\S]+)\.do$ ajp://127.0.0.1:8009/$1\.do [P,L]  
  7. RewriteRule ^/([\S]+)\.do;jsessionid=([\S]+)$ ajp://127.0.0.1:8009/$1\.do;jsessionid=$2 [P,L]  
  8.   
  9. RewriteRule /(\S+)\.js$ ajp://127.0.0.1:8009/$1\.js [P]  
  10. RewriteRule /(\S+)\.css$ ajp://127.0.0.1:8009/$1\.css [P]  
  11. RewriteRule /(\S+)\.gif$ ajp://127.0.0.1:8009/$1\.gif [P]  
  12. RewriteRule /(\S+)\.jpg$ ajp://127.0.0.1:8009/$1\.jpg [P]  
  13. RewriteRule /(\S+)\.ico$ ajp://127.0.0.1:8009/$1\.ico [P]  
  14. RewriteRule /(\S+)\.png$ ajp://127.0.0.1:8009/$1\.png [P]  

当然,上面的域名我并没有到网上去申请来,然后通过dns解析到我的机器,只需要修改一下本机的一个文件,即可将你想要的域名都指向本机(只对本机有效),这个文件的地址是:C:\Windows\System32\drivers\etc\HOSTS

以下是我的hosts文件的配置,供大家参考:

[html] view plaincopy
  1. #ip                域名  
  2. 127.0.0.1           localhost  
  3. 127.0.0.1           www.soogifts.com  
  4. 127.0.0.1           image.soogifts.com  
  5. 127.0.0.1           www.thetalentonline.com 

这篇关于apache和tomcat相结合使用实现伪静态,同时把静态文件从工程里分离开的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136523

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API