apache/nginx 开启rewrite模块,实现链接的跳转/nginx上使用TP框架

项目需求是将一个长链接参数很多的链接伪装成一个短链接

1.apache的rewrite模块的打开。

   我本地用的是wamp集成环境,所以rewrite可以直接打开  wamp->apache->apache modules->rewrite_module

   线上用的apac独立安装的apache,打开它的rewrite模块要做的有两个地方

  1.把#LoadModule rewrite_module modules/mod_rewrite.so前面的#去掉。

 2.找到
 #
 # AllowOverride controls what directives may be placed in .htaccess files.
 # It can be “All”, “None”, or any combination of the keywords:
 # Options FileInfo AuthConfig Limit
 #
 AllowOverride None
 把 AllowOverride None 改为 AllowOverride All

 最后就是重启一下apache服务器使配置生效,这样就支持.htaccess文件了

 2.让apache服务器支持.htaccess
  修改httpd.conf文件 
  Options FollowSymLinks
  AllowOverride None
  改为
  Options FollowSymLinks
  AllowOverride All

 此处参考文章 http://blog.csdn.net/lhzjj/article/details/30050069


 这样就打开了apache的rewrite的模块


2.rewrite规则将长链接伪装成短链接

 这边rewrite的写的规则主要是正则写的

我这边是直接写在apache的httpd.conf中,写完之后重启apache,当然,要是在项目的根目录下面加上.htaccess文件,在这个文件里面写rewrite的规则也是可以得。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/apitest\.php
    RewriteRule ^/item(.*)-(.*) /theweather/WX/app/index.php?i=4&c=entry&do=shop&m=ewei_shop&p=detail&id=$1&mid=$2 [L]
</IfModule>


//nginx实现链接的跳转

nginx的rewrite的规则直接在配置文件当中你相对应的server当中写就可以了

 if ($uri !~ "^/apitest\.php"){
         set $rule_0 1$rule_0;
 }
 if ($rule_0 = "1"){
         rewrite ^/item(.*)-(.*) /app/index.php?i=4&c=entry&do=shop&m=ewei_shop&p=detail&id=$1&mid=$2 last;
 }


nginx中tp框架去掉index.php

首先要让你的tp框架能在nginx中正常显示。你要让你的nginx支持pathinfo的路径形式,也就是a/b/c的路径形式

你在配置的时候

location ~ \.php {
          #fastcgi_pass remote_php_ip:9000;
          fastcgi_pass unix:/dev/shm/php-cgi.sock;
          #fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          #include fastcgi.conf;
          fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句
          fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句

                  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                  include        fastcgi_params;
          if (!-e $request_filename) {
                  rewrite  ^/index.php/(.*)$  /index.php?s=$1 last;
                  break;
          }
  
      }

主要是增加标红的两句即可。

然后就是重写路径隐藏入口文件

if (!-e $request_filename) {
          #一级目录
          rewrite ^/(.*)$ /index.php/$1 last;
         }

一样的重写规则直接重新去掉index.php就可以


nginx开启rewrite.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值