Web服务器 Apache URL重写

一 、URL重写作用

实现伪静态

图片防盗链

自定义404错误页面


二、重写模块开启

apache的配置文件httpd.conf文件中开启:

LoadModule rewrite_module modules/mod_rewrite.so

、在哪儿配置重写规则?作用范围有何不同

      1) 可以使用在Apache主配置文件httpd.conf中(服务器级别,适用于拥有管理权限的服务器)

      2) 可以使用在httpd.conf里定义的虚拟主机配置中

      3) 可以使用在配置文件.htaccess中 (目录级别,适用于没有管理权限的虚拟主机) 
   

       假如你对你的的网站内容所在的服务器没有管理员权限,或者你的网站放在ISP的服务器
      上托管等等条件下,你无法改写主配置文件,然而你可以对你的WEB站点内容所在的目录
      有写权限,则你可以设置自己的.htaccess文件达到同样的目的。
      但你需要确定 主配置文件中对你的网站所在的目录定义了下面的内容: 
     Options Indexes FollowSymLinks 
     AllowOverride all 
      否则你的.htaccess不会工作。 


、重写举例

1) 隐藏Apache下的某个目录,使得对该目录的任何请求都重定向到另一个文件。

a) httpd.conf的实现方法 

虚拟主机配置示例:

<VirtualHost *:80>
    #网站目录,如果在www目录下的php目录,下面    #就填写F:/www/php
    DocumentRoot "D:/WALP/www" 
    #域名
    ServerName www.plqjnet.com
    #这里配置欢迎首页面
    DirectoryIndex index.html index.htm index.php
    <Directory />
    Options FollowSymLinks
    #不允许别人修改我们的页面
    AllowOverride None
    #设置访问权限
    order allow,deny
    Allow from all
    </Directory>   
</VirtualHost>



我们放下面的部分到/usr/local/apache/conf/httpd.conf :
      options Indexes followsymlinks 
      allowoverride all 
      rewriteengine on 
      rewritebase / 
      rewriterule ^(.*)$ index.html.en [R=301] 


      注:rewriteengine on 为重写引擎开关,如果设为off,则任何重写规则定义将不被应
      用,该开关的另一好处就是如果为了临时拿掉重写规则,则改为off再重启动Apache即
      可,不必将下面一条条的重写规则注释掉。 
      rewritebase / 的作用是如果在下面的rewriterule定义中被重写后的部分(此处为文件
      名index.html.en)前面没有/,则是相对目录,相对于这个rewritebase后面的定义也就
      是/usr/local/apache/htdocs/index.html.en,否则,如果此处没有rewritebase /这
      一项,则被重写成http://192.168.1.56/usr/local/apache/htdocs/manual/index.html.en,
      显然是不正确的。 


      不过这里我们也可以不用rewritebase / , 而改为: 
      rewriteengine on 
      rewriterule ^(.*)$ /index.html.en [R=301] 
      或者 
      rewriteengine on 
      rewriterule ^(.*)$ http://192.168.1.56/index.html.en [R=301] 


b> .htaccess的实现方法 


      我们先放下面的部分到httpd.conf:
      options Indexes followsymlinks 
      AllowOverride all 


      然后放下面的部分到/usr/local/apache/htdocs/manual/.htaccess中 
      rewriteengine on 
      rewritebase / 
      rewriterule ^(.*)$ index.html.en [R=301] 


     注:对文件.htaccess所作的任何改动不需要重启动Apache. 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值