version 4.1.0

ปรับแต่งการเรียก URL บน Yii 2 Advanced

  อาทิตย์ที่ 09 สิงหาคม พ.ศ. 2558 เวลา 12:15:44 น.      3,249 ครั้ง


ปรับแต่งการเรียก URL บน Yii 2 Advanced

ตัวอย่างคำสั่ง .htaccess

 
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
    Options FollowSymlinks
    RewriteEngine on
    RewriteRule ^$ frontend/web/            [L]
    RewriteRule ^(.+)?$ frontend/web/$1     [L]
</IfModule>                          
                            

ขั้นตอนที่ 1 สร้างไฟล์ใหม่ ชื่อว่า ".htaccess" เก็บไว้ในไดเรคทอรี่ [skeleton]\.htaccess

ตัวอย่างคำสั่ง .htaccess

 
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
    Options FollowSymlinks
    RewriteEngine on
    RewriteRule ^$ web/            [L]
    RewriteRule ^(.+)?$ web/$1     [L]
</IfModule>                          
                            

ขั้นตอนที่ 2 สร้างไฟล์ใหม่ ชื่อว่า ".htaccess" เก็บไว้ในไดเรคทอรี่ [skeleton]\backend\.htaccess

ตัวอย่างคำสั่ง .htaccess

 
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
    RewriteEngine on
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php
</IfModule>   
                            

ขั้นตอนที่ 3 สร้างไฟล์ใหม่ ชื่อว่า ".htaccess" เก็บไว้ในไดเรคทอรี่ [skeleton]\frontend\web\.htaccess

ตัวอย่างคำสั่ง .htaccess

 
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
    RewriteEngine on
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php
</IfModule>   
                            

ขั้นตอนที่ 4 สร้างไฟล์ใหม่ ชื่อว่า ".htaccess" เก็บไว้ในไดเรคทอรี่ [skeleton]\backend\web\.htaccess

ตัวอย่างคำสั่ง main.php

 
'errorHandler' => [
    'errorAction' => 'site/error',
],

'urlManager' => [	
    'showScriptName' => false,   // Disable index.php
    'enablePrettyUrl' => true,   // Disable r= routes
    'enableStrictParsing' => true,
    'rules' => array(
        '' => 'site/index',
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
],
            
                            

ขั้นตอนที่ 5 เพิ่มเติมคำสั่ง "urlManager" ลงในส่วนของ "component" ภายในไฟล์ "main.php" ที่อยู่ในไดเรคอรี่ [skeleton]\frontend\config\main.php

ตัวอย่างคำสั่ง main.php

 
'errorHandler' => [
    'errorAction' => 'site/error',
],

'urlManager' => [	
    'showScriptName' => false,   // Disable index.php
    'enablePrettyUrl' => true,   // Disable r= routes
    'enableStrictParsing' => true,
    'rules' => array(
        '' => 'site/index',
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
],
            
                            

ขั้นตอนที่ 6 เพิ่มเติมคำสั่ง "urlManager" ลงในส่วนของ "component" ภายในไฟล์ "main.php" ที่อยู่ในไดเรคอรี่ [skeleton]\backend\config\main.php

ตัวอย่างคำสั่ง main.php

 
// [skeleton]\frontend\config\main.php
use \yii\web\Request;
$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());

return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'frontend\controllers',
    'components' => [
        'request' => [
            'baseUrl' => $baseUrl,
        ],
        
        /* ..... */

    ],
    
];
            
                            

ขั้นตอนที่ 7 เพิ่มเติมคำสั่งการเรียกใช้งาน URL ใหม่ โดยตัดคำว่า "frontend/web" ทิ้งไป ให้เราเข้าไปทำการแก้ไขในส่วนของ "component" ตรงค่า "request" ตามตัวอย่างบรรทัด 12 โดยการแก้ไขค่า "baseUrl" ภายในไฟล์ "main.php" ที่อยู่ในไดเรคอรี่ [skeleton]\frontend\config\main.php

ตัวอย่างคำสั่ง main.php

 
// [skeleton]\backend\config\main.php
use \yii\web\Request;
$baseUrl = str_replace('/web', '', (new Request)->getBaseUrl());

return [
    'id' => 'app-backend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'backend\controllers',
    'components' => [
        'request' => [
            'baseUrl' => $baseUrl,
        ],
        
        /* ..... */

    ],
    
];
            
                            

ขั้นตอนที่ 8 เพิ่มเติมคำสั่งการเรียกใช้งาน URL ใหม่ โดยตัดคำว่า "web" ทิ้งไป ให้เราเข้าไปทำการแก้ไขในส่วนของ "component" ตรงค่า "request" ตามตัวอย่างบรรทัด 12 โดยการแก้ไขค่า "baseUrl" ภายในไฟล์ "main.php" ที่อยู่ในไดเรคอรี่ [skeleton]\backend\config\main.php

รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพที่ 1 | รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพที่ 2 | รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพที่ 3 | รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพตัวอย่าง

รูปภาพที่ 4 | รูปภาพตัวอย่าง



แท็ก


นักแปล / นักเขียน / เรียบเรียง

author

เอกบิณ ใจแก้วมา (แม็ก)

"โปรแกรมเมอร์ตัวเล็ก ๆ" สะสมประสบการณ์ด้านการพัฒนาซอฟแวร์มามากกว่า 11 ปี
# ติดตามผลงานได้ที่ | พบกับเราที่ Google+ | Facebook






Comment