深圳网站制作htaccess 实现URL重写
使用 .htaccess 进行 URL 重写的几个简单方法
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
# http://domain/about -> http://domain/about.php
--------------------------------------------------
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
# http://domain/about -> http://domain/index.php?q=about
// $url_data is an array
$url_data = explode("/",$HTTP_SERVER_VARS['PATH_INFO']);
?>
Apache和Resin组合时UrlRewriteFilter失效的解决方法
目前在Spring3.0的官方example中都使用UrlRewriteFilter来做伪静态,单独运行在Resin等JavaEE Web容器中的时候一切都OK,但是一旦与Apache一起组合的时候总是会出现404或403错误,当然UrlRewriteFilter所设定的规则 也无效。
造成这种现象的原因是因为在默认情况下,静态的资源均由Apache进行处理,而jsp或者由web.xml所映射的servlet均交给 resin进行处理。如果web项目没有使用UrlRewriteFilter则一切OK,但是使用了UrlRewriteFilter之后,由 servlet所映射的地址并不是/*即所有资源了,而是类似/app/*这样的设置。也就是说,用户所请求的资源首先由Apache判断一下,然后再由 选择的交给Resin,最后才执行UrlRewriteFilter的规则。
知道了原因,解决的方法也就出来了,只要告诉Apache将所有的资源都交由Resin来处理就可以了,可以使用Resin的servlet-mapping方法进行配置,配置如下
xmlns:resin="http://xbceo.com/ns/resin/core">
htaccess 实现URL重写
1、安装 mod_rewrite 模块 因为 Apache 服务器默认是没有打开 mod_rewrite 模块的,所以我们必须手动来启动。打开 Apache 的配置文件 httpd.conf 文件,找到下面一行: #LoadModule rewrite_module modules/mod_rewrite.so 前面的 # 号是 Apache 配置文件的注释符,也就是 Apache 服务器没有加载该模块。将前面的 # 号去掉,保存后重启 Apache 服务器,这是我们就实现了加载 mod_rewrite 这个模块了。(提示:任何一次对 Apache 的配置文件 httpd.conf 文件都是要重新启动 Apache 才能生效的)
2、新建 .htaccess 文件 在 windows 系统默认的情况下是不能新建没有文件名的文件的,这里建议大家使用 vim 这个编辑器来新建。方法是打开 vim 编辑器随便输入一段文字,然后保存为 .htaccess 即可。很多朋友因为习惯了 windows 系统,所以新建这个文件很头疼。还有就是文件名一定不要错,我今天写的时候把文件保存成了.htacess,看到没有,少了一个c,怎么调试都不对,还好最后发现了这个低级错误。
3、配置 .htaccess 文件 .htaccess 文件务必放在你项目的根目录下,不要放在其他文件夹下。配置 .htaccess 文件的格式如下: RewriteEngine On #这里是你的规则 解释:RewriteEngine On :启动URL重写引擎 先看如下一个配置好了的 .htaccess 文件实例: RewriteEngine On RewriteRule ^index.html$ /index.php [L] RewriteRule ^shop/(.+)/$ shop/shop.php?PRoviderId=$1 [L]
分析:上面 .htaccess 文件就写了二条规则。当在浏览器中输入 index.html 时,后台调用的是 index.php 文件。符号“^”是以后面的字符开头,相信熟悉正则表达式的朋友不会陌生吧,符号“$”是以前面的字符结尾。符号L表示停止处理接下来的规则。最后一条当我们在浏览器中输入 shop/2322 时,后台调用 shop.php文件并传递参数provider=2322 。 配置规则,大家照着那一条去写吧,记得每行后面加个 L 符号。
深圳制作网站
web前端培训
再写一个:
http://www.xbceo.com/category.php?id=12 想重写成 http://www.xbceo.com/category/12
RewriteRule ^category/([0-9]+)$ category.php?id=$1
如果有多页的文章 如:http://www.xbceo.com/category.php?id=12&page=3 重写成 http://www.xbceo.com/category/12/3
RewriteRule ^category/([0-9]+)/([0-9]+)$ category.php?id=$1&page=$2
如果你想升级你的站点,又要保证老的链接都可用,你也可以通过mod_rewrite模块来实现。你仅仅需要写一个规则之处这个网页被永久的移动了。例子如下:
RewriteRule ^oldpage.html$ newpage.html [R=301]