分类 Apache 下的文章

通过.htaccess使http自动301跳转到https的方法

网站安装SSL证书后,会出现http和https共存的情况,即HTTP不会自动跳转到HTTPS,SSL证书大全来说说使用.htaccess文件,将http自动301强制跳转到https的方法:

http301跳转到https

注意:.htaccess是Apache服务器下的配置文件,如果你的服务器或者虚拟主机不是Apache环境则不适用此方法

1、在网站的根目录创建.htaccess文件,如果已存在.htaccess文件,则直接编辑即可;

2、用编辑器或者记事本打开.htaccess文件,在最下面添加写入如下语句:

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

Windows系统下Apache搭配PHP5支持MySQL

今天在机器上配好apache2.0.x+php5+mysql5,部署帝国cms系统的时候,结果发现php5默认是不支持mysql的。于是便打开php.ini文件,查找extension=php_mysql.dll,把前面的分号去掉,重启apache,报错找不到php_mysql.dll。这点困难吓不到我,找到extension_dir指向到ext所在的目录,然后把libmysql.dll拷贝到系统system32目录下,重启apache,成功了。

Apache-Tomcat的server.xml配置文件中Connector节点中URIEncoding的作用

Apache-Tomcat中,为了方便GET提交数据时自动采用UTF8编码,在server.xml配置文件中Connector节点中URIEncoding="UTF-8"。

<Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>

这里指定了GET时候的数据编码。但是,当使用IIS/Nginx作为webserver转发servlet/jsp请求给Tomcat时候,这个设置却失效了。其实原因很简单:IIS是通过AJP协议,把请求转发到Tomcat监听的8009端口上的,所以这里针对8080的设置自然就无效了。正确的方法是进行下面的设置:

<Connector port="8009" enableLookups="false" redirectPort="8443"
debug="0" protocol="AJP/1.3" URIEncoding="UTF-8"/>

所以最好2处都设置URIEncoding="UTF-8"为好。

WordPress安装不使用MySQL数据库默认端口(MySQL默认端口3306)

在Wrodpress的配置文件中只有定义数据库服务器地址,并没有填写端口的地方
define('DB_HOST', 'localhost');

如果你的机器运行了多个MySQL数据库(新版本WP只能运行在4.x以上的MySQL上)。
可以使用define('DB_HOST', 'localhost:3307′);

Linux还可以通过本地的socks文件来连接数据库,格式如下:
define('DB_HOST', 'localhost:/tmp/mysql.sock');

Apache中整合JSP和PHP

本文介绍整合Apache中JSP和PHP,以及介绍发布应用程序和解决方案所使用的技术。

我们最希望任何事都是完美的,如在企业应用中,我们只需要选择一个Web平台就可以部署所有的企业应用。但往往理想与现实相去甚远。在现实世界中,信息系统往往是由很多不同的操作系统、平台以及应用环境混合而成的。而且为了保持与旧的系统兼容,系统总是将当前的技术和以前的遗留技术进行混合,这样周而复始。就使系统变得越来越复杂。

对于这样的恶性变化会使很多人疲于奔命,尤其是开发人员,他们将面临几乎令人崩溃般的挑战。尤其是要将两个或更多的技术部署在同一个应用时更是如此。如本文要给出的例子中,就是将PHP和JSP程序同时部署在运行于Apache中的同一个应用程序中。在这个例子中,将提供一种方法来快速地部署这两种Web程序。开发人员也可以借鉴这种方法来处理其他类似的难题。

也许有很多人会问,我应该如做也能将基于PHP和JSP的Web程序部署在同一个Web应用程序中呢?下面我就来回答这个问题。这个问题的基本答案就是先将apache配置成PHP Web服务器,并使用Apache处理所有的PHP/CGI请求,同时使用Tomcat处理所有的其他请求(包括JSP请求)。在开始之前,让我们先看看需要哪些软件:

完成本文的例子需要三个软件:
1. Apache HTTP Server
2. Apache Tomcat
3. Apache Tomcat Connectors

一.解决方案所使用的技术

对于上述的问题,我们有几个解决方案可以考虑。这些解决方案如下所示:
1. 使Apache服务器作为主要的或默认的请求处理器,只传递Servlet/JSP请求给Java容器。
2. 将Java容器作为主要或默认的请求处理器,只允许PHP/CGI请求由Apache处理。
3. 不使用Apache,并在Tomcat中运行PHP/CGI程序。

上述的前两种解决方案类似。这两种方法都是将大量的请求引入某一个服务器(Tomcat或Apache),然后使用别外的服务器处理个别的请求(PHP和JSP)。第三种方法虽然看起来比较简单,很诱人。但Apache处理PHP时的效率是非常高的,并且提供了更安全的机制,因此,Tomcat并不合适处理PHP程序。

在本文中我们将采用第二种方案,就是将Tomcat作为主要的Web服务器来接收大部分请求,同时Apache作为后备服务器来处理PHP/CGI请求,它们的关系如图1所示。如果读者对第一种方法情有独衷,可以很容易地根据第二种方法来设置。

Tomcat作为主要的请求处理器,Apache作为辅助请求处理器

图1  Tomcat作为主要的请求处理器,Apache作为辅助请求处理器

二.发布应用程序

一查我们对环境进行了正确的配置,我们就可以将应用程序打包并发布到Web服务器了。将应用程序发布到Apache上和发布到Tomcat上没什么不同,都需要建立一个WEB-INF/web.xml文件,所不同的是如果请求的是PHP或CGI程序,将绕过Tomcat直接传给Apache处理。

尽管改变Apache的根目录(默认是'dtdocs')对于发布应用程序并不方便。但我们可以将Apache的根目录指向Tomcat的发布目录。这样 PHP/CGI就可以和JSP打在同一个WAR/EAR包中。我们只要简单地目录中放置HTML.PHP和JSP页即可完成发布。这对于开发,还是测试都是非常方便的。

另外,将PHP和JSP和CGI发布到同一个目录中还可以使它们共享相同的支持文件(CSS、JS、images等)的内容。还有,这个模型提供了一个Web应用程序的完整结构,以及从Java Web目录中调用PHP/CGI程序变得更简单(相对而言)。

三.总结

无论你在工作中是否被要求集成遗留的Web应用程序到新的Web程序中,或是将某个开源系统加进定制的Web应用中,或简单地将两个不同的Web应用集成到一起,你都有可能将不同的技术集成到同一个Web应用中。总之一句话,将不同的技术转换到同一种技术平台上是最好的解决方案

参考资料:http://developer.51cto.com/art/200907/133721.htm