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>',
            ]
        ],

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM