在GAE上搭建PHP环境并开启URL重写

1.下载quercus:

http://quercus.caucho.com/

版本当然最新的最好,因为原则上来说新版本对php支援程度更高,但是在自己测试的时候发现最新的4.0.25存在一点问题,于是换用4.0.18版本.

选择WAR格式的文件下载,利用Winrar解压,将WEB-INF\lib\的jar拷贝至GAE工程下的war\WEB-INF\lib\目录

2.配置Quercus:

在appengine-web.xml中配置对php文件的支持:


  1. 		<static-files> 
  2.     <exclude path="/**.php" /> 
  3. </static-files> 
  4. <resource-files> 
  5.     <include path="/**.php" /> 
  6. </resource-files> 

在web.xml中添加一个servlet:


  1. 		<servlet> 
  2.     <servlet-name>Quercus Servlet</servlet-name> 
  3.     <servlet-class>com.caucho.quercus.servlet.GoogleQuercusServlet</servlet-class> 
  4. </servlet> 

添加对php文件的映射:


  1. 		<servlet-mapping> 
  2.     <servlet-name>Quercus Servlet</servlet-name> 
  3.     <url-pattern>*.php</url-pattern> 
  4. </servlet-mapping> 

3.实现URL重写(通过UrlRewriteFilter实现):

下载UrlRewriteFilter,将urlrewritefilter-*.jar拷贝在工程的war\WEB-INF\lib\目录下

在web.xml中添加URL过滤


  1. 		 <filter> 
  2.     <filter-name>UrlRewriteFilter</filter-name> 
  3.     <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
  4. </filter> 
  5. <filter-mapping> 
  6.     <filter-name>UrlRewriteFilter</filter-name> 
  7.     <url-pattern>/*</url-pattern> 
  8.     <dispatcher>REQUEST</dispatcher> 
  9.     <dispatcher>FORWARD</dispatcher> 
  10. </filter-mapping> 

在工程的war\WEB-INF目录下新建一个Url重写配置文件:urlrewrite.xml


  1. 		<?xml version="1.0" encoding="utf-8"?> 
  2. <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
  3.         "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
  4.   
  5. <urlrewrite> 
  6.     <rule enabled="true" match-type="regex"> 
  7.       <note>UrlRewrite</note> 
  8.       <condition type="request-filename" operator="notfile" name="notfile" next="and"/> 
  9.       <condition type="request-filename" operator="notdir" name="notdir" next="and"/> 
  10.       <from>/(.*)</from> 
  11.       <to last="true" type="forward">/index.php</to> 
  12.     </rule> 
  13. </urlrewrite> 
  14.   

这条规则就等同于.htaccess中的:

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1

注意:这条规则可能会导致GAE本地管理http://localhost:8888/_ah/admin/失效,由于时间关系就不再修正.

4.测试:

在工程的war\目录下新建一个index.php文件:


  1. 		<?php 
  2. echo '<pre>'; 
  3. print_r($_SERVER); 
  4. ?> 

由于我已经将index.php设置为welcome文件,所以直接打开http://localhost:8888/

效果如图所示:

 

附上一些参考资料:

http://blog.caucho.com/2009/04/28/quercus-on-the-google-app-engine/

http://blog.caucho.com/2009/05/31/quercus-on-google-app-engine/

http://tuckey.org/urlrewrite/#documentation

PHPer们还在犹豫什么,赶紧上吧~

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索目录
, php
, 文件
, http
, urlrewrite.xml 配置
, web-inf
, quercus
工程
nginx开启url重写、php开启url重写、apache开启url重写、.htaccess开启url重写、nginx开启重写,以便于您获取更多的相关知识。

时间: 2024-10-31 20:02:52

在GAE上搭建PHP环境并开启URL重写的相关文章

linux下apache开启url重写的方法(详细说明)_Linux

Linux开启url重写的方法: 1.打开 apache 里httpd.conf(通常是在/etc/httpd/conf目录里) 2.找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的# 3.找到 AllowOverride None 改成 AllowOverride All , 有两个全部改掉 注:AllowOverride 的参数设置为ALL,表示整台服务器上都支持URL规则重写.Apache 服务器要读每个网站下目录下的 .

在ubuntu上搭建交叉编译环境---arm-none-eabi-gcc

最近要开始搞新项目,基于arm的高通方案的项目. 那么,如何在ubuntu上搭建这个编译环境呢? 1.找到相关的安装包:http://download.csdn.net/download/storeage/7858739(我的在这里下的) 2.解压缩包到/home目录下,也可以放到其它地方,随你. 3.打开环境配置脚本:/etc/profile 看到脚本如下: # /etc/profile: system-wide .profile file for the Bourne shell (sh(1

Apache开启URL重写功能方法

  1.关于rewrite模块的调用: Apache 2.x 中URL重写,是通过mod_rewrite.so 来实现的,所以您要查看您的Apache 是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf 中已经调用了这个模块.在大多数主流发行版中,Apache 2.x 是把rewrite模块已经编入进去了.比如我用的是Slackware.Apache 2.x的配置文件,放在 /etc/httpd 目录下. 在 httpd.conf 中,我们会发现类似如下的一行,是有关

Ubuntu上搭建Hadoop环境(伪分布式)

首先要了解一下Hadoop的运行模式: 单机模式(standalone)        单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为空.当配置文件为空时,Hadoop会完全运行在本地.因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程.该模式主要用于开发调试MapReduce程序的应用逻辑. 伪分布模式(Pseudo-Distributed

手把手教你如何在阿里云服务器上搭建PHP环境?

购买阿里云服务器前,请先到阿里云官网领取幸运券,然后再购买,除了价格上有很多优惠外,还可以参与抽奖.详见:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=2a7uv47d&utm_source=2a7uv47d 首先你需要买一个阿里云服务器,买的时候可以选择操作系统(买完之后在控制台也可以更改操作系统) 我使用的是CentOS,买完服务器之后需要添加一个多语言环境,这个需要到云市场搜索"

使用docker toolbox 在windows上搭建统一环境

1.先下载docker toolbox 以下是下载地址: http://get.daocloud.io/#install-docker-for-mac-windows  2.下载安装 git windows 客户端   安装全都 忽咯了,一律允许. 点击    启动docker 如果看到以下界面就显示成功了:  第一次比较慢,要装default 这个系统,启动后,你可以打开你虚拟机看看   接着讲一下,如何将本地的工程目录放到docker 容器环境下:  事先约定好:我在E盘上面新建 了一个wo

《MonoTouch开发实践指南》一1.1 搭建开发环境

1.1 搭建开发环境 在使用MonoTouch开发之前,有许多事情需要先验知识(priori).首先从苹果(Apple)入手获取所需要的一切,然后过渡到必不可少的MonoTouch上. 1.1.1 安装iOS SDK和苹果开发工具 欢迎来到使用.NET进行iOS应用开发的世界.我敢肯定,你现在会兴奋得想立刻开始编写程序,不过,首先要做的是在手头那部闪闪发亮的Mac上搭建开发环境.然后熟悉一下在模拟器和iPhone上进行开发所需的所有步骤以及应用程序如何在它们中运行.注意 本书的内容也适用于iPo

树莓派上搭建 Hadoop 集群环境的方法

最近在学习 Hadoop,正好前几天又在玩儿树莓派,查阅了一些文档,感觉在树莓派上搭建 Hadoop 集群是可行的,当然了,别对性能抱太大的希望,主要是感受一下分布式计算的魅力.在这个过程中参考了很多文档,先列在这里,基本上这些文档都非常详细了,大家可以直接参考. How to build 7 node Raspberry Pi Hadoop cluster Hadoop集群安装配置教程 Hadoop2.6.0 Ubuntu/CentOS 实验软硬件清单 以下是我的实验环境所用的硬件和软件版本清

Ubuntu上搭建PHP+Mysql+Nginx环境(apt-get方式)

Ubuntu上搭建PHP+Mysql+Nginx环境(apt-get方式) ubuntu版本:Ubuntu 10.04 LTS 1.首先使用apt-get下载Nginx,php教程,mysql教程,phpmyadmin,spawn-fcgi. sudo apt-get install nginx php5-cgi php5-cli mysql-server-5.1 phpmyadmin  spawn-fcgi 期间可能要输入mysql的密码,按照提示一步一步安装就是了. OK后,你在Firefo