Yii2 Apache + Nginx 路由重写

一、什么是路由重写

  原本的HTTP访问地址: www.test.com/index.php?r=post/view&id=100  表示这个请求将由PostController 的 actionView来处理。

  重写后的HTTP访问地址 www.test.com/post/view/id/100  这样的链接看起来简洁美观,对于用户比较友好。同时,也比较适合搜索引擎的胃口, 据说是SEO的手段之一。

二、Apache 路由重写

  (一)开启Apache的重写模块

    1. 打开apache的config的 hhttpd.conf 将 #LoadModule rewrite_module modules/mod_rewrite.so  的#号去掉

    2. 重启Apache服务器即可

  (二)虚拟主机配置

    1. 打开 Apache\conf\vhosts.conf配置路径

    2. 将配置修改为如下:

<VirtualHost 127.0.0.1:80>
    ServerName test-yii2.com
    DocumentRoot F:/wamp64/www/yii2/frontend/web
    <Directory  "F:/wamp64/www/yii2/frontend/web">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
        RewriteEngine on
        # 如果请求的是真实存在的文件或目录,直接访问
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # 如果请求的不是真实文件或目录,分发请求至 index.php
        RewriteRule . index.php
    </Directory>
</VirtualHost>

    3. 重启Apache

  (三)还有另外一种配置方式,无需重启Apache服务器,当时改当时生效。

    1. 在 “F:/wamp64/www/yii2/frontend/web”  目录下增加 .htaccess 代码如下:    

    RewriteEngine on
    # 如果请求的是真实存在的文件或目录,直接访问
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # 如果请求的不是真实文件或目录,分发请求至 index.php
    RewriteRule . index.php

  (四) YII配置

    1. 在main.php下 components这个数组中增加如下如下配置:

        ‘urlManager‘ => [
            ‘enablePrettyUrl‘ => true,  //开启美化url配置,默认关闭
            ‘enableStrictParsing‘ => false, //不启用严格解析,默认不启用.如果设置为true,则必须建立rules规则,且路径必须符合一条以上规则才允许访问
            ‘showScriptName‘ => false, //隐藏index.php
            ‘rules‘ => [
               // http://frontend.com/site/index 重写为  http://frontend.com/site
                ‘<controller:\w+>/‘=>‘<controller>/index‘,
            // http://frontend.com/site/view?id=1 重写为 http://frontend.com/site/1
                ‘<controller:\w+>/<id:\d+>‘ => ‘<controller>/view‘,
            // http://frontend.com/site/ceshi?id=123 重写为  http://frontend.com/site/ceshi/123
                ‘<controller:\w+>/<action:\w+>/<id:\d+>‘ => ‘<controller>/<action>‘,
            ]
        ],

    

时间: 2024-10-23 02:57:34

Yii2 Apache + Nginx 路由重写的相关文章

nginx server配置及路由重写相关

文件名   example.conf server { #监听的端口号 listen 80; #域名 server_name  www.example.com   *.example.com; #指定目录某个目录的父目录,          root  D:/www; #指定404页面 error_page 404 /404.php; #location模块当其他都匹配不到的时候才匹配'/' #根目录下, location  /  { #配置默认页 index  index.php #nginx

Apache Nginx URL 地址 重写

URL重写这东西在工作中用了很多次了,但每次都忘记了要记得把知道的积累下来. 哎,要么认为没必要,要么就是没时间?! 一.Apache 篇 官方地址:http://man.chinaunix.net/newsoft/ApacheManual/mod/mod_rewrite.html 1.htaccess基本语法介绍 服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件. #设置重写的根目录RewriteBase /#开启重写引擎RewriteEngine

yii2项目实战-路由美化以及如何正确的生成链接

yii2项目实战-路由美化以及如何正确的生成链接 更新于 2016年12月17日 by 白狼 被浏览了 705 次 美化路由 何为美化路由呢?美化嘛,无外乎就是给路由化化妆,让她好看点.我虽没化过妆,那好歹也是见过描描眉的.下面我们就来看看如何给你的路由添加添加点"颜色"的. yii的路由美化工作,全权由urlManager组件负责.默认情况下,该组件并没有开启. 我们在配置文件backend\config\main.php中简单配置下该组件 'urlManager' => [

Vue路由重写# 与 Web服务器路由重写双配置实现路由重写

前言vue路由组件我使用的vue-routerweb服务器使用nginx Vue-router配置vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载http://localhost:8080/#/HelloWorld如果不想要很丑的 hash,可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面 const router

Nginx URL重写(rewrite)配置及信息详解

Nginx URL重写(rewrite)配置及信息详解 URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向.Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的.默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持 rewrite是实现URL重写的关

web服务器 - apache &amp; nginx &amp; tomact

web服务器 - apache & nginx & tomact HTTP Server本质上来说都是这样几件事: 监听端口 接收(accept)socket连接 解析HTTP请求 使用通用或专用协议对请求进行分发 接收分发的请求产生的运行结果 将结果格式化成HTTP Response并写到socket里面 关闭连接或者Keep-Alive 区别一方面在于用了什么语言来实现(Tomcat用Java),一方面是分发时支持的具体协议,Tomcat只支持Servlet接口,Apache和ngin

为PHP设置服务器(Apache/Nginx)环境变量

为PHP设置服务器(Apache/Nginx)环境变量 设置环境变量常见的地方为区分开发环境/生产环境,或者定义一些数据库的帐号密码 设置Apache环境变量 指令 设置当前环境变量为DEV SetEnv RUNTIME_ENVIROMENT DEV 数据库帐号密码 SetEnv MYSQL_USERNAME root SetEnv MYSQL_PASSWORD root 配置文件格式 <VirtualHost *:80> ServerAdmin [email protected] Docum

MVC 多级目录(控制器) 路由重写 及 多级Views目录 的寻找视图的规则

转自:[原]Asp.net Mvc   多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 asp.net mvc 为了更好的控制views的页面存放,和控制器的可读性,需要分开多级目录来存放. 1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestController根本就不在Controllers的根目录下,而是在Controllers/Admin下

Apache/Nginx+Tomcat+Memcahced实现session管理

一.memcached简介 Memcached是一个免费开源.高性能.分布式的内存对象缓存系统.Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储. Memcached项目地址: http://www.memcached.org/ 现在最新版本为1.4.22,时间点:2015.01.26 二.实验环境介绍 第一个实验:我们在node3节点实现一个LNMP架构,测试memcached的基本的使用和web gui界面管理: 第二个实验:我们将node3节点当