Yii2 同一域名处理前后台方法

将域名指向项目的根目录www/xxxx项目名/并建立.htaccess文件内容如下

  # prevent directory listings
  Options -Indexes
  # follow symbolic links
  Options FollowSymlinks
  RewriteEngine on

  RewriteCond %{REQUEST_URI} ^/admin/$
  RewriteRule ^(admin)/$ /$1 [R=301,L]
  RewriteCond %{REQUEST_URI} ^/admin
  RewriteRule ^admin(/.+)?$ /backend/web/$1 [L,PT]
  
  RewriteCond %{REQUEST_URI} ^.*$
  RewriteRule ^(.*)$ /frontend/web/$1

在backend\config\main.php修改

  'homeUrl' => '/admin',
  //在components下添加
  'request' => [
      'baseUrl' => '/admin',
  ],

在frontend/config/main.php修改

  'homeUrl' => '/',
  //在components下添加
  'request' => [
      'baseUrl' => '',
  ],

在frontend/web和backend/web添加伪静态文件 .htaccess

  # use mod_rewrite for pretty URL support
  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

开启url美化(在common下的main.php中配置就不用在前后台配置了,看你心情)

     'urlManager' => [
          'enablePrettyUrl' => true,
          'showScriptName' => false,
          'rules' => [
          ],
      ],

如果是nginx,看情况修改

  server {
      charset      utf-8;
      client_max_body_size  200M;
  
      listen       80; ## listen for ipv4
      #listen       [::]:80 default_server ipv6only=on; ## listen for ipv6
  
      server_name  advanced.loc;
      root         /path/to/advanced;
  
      access_log   /path/to/logs/advanced.access.log main buffer=50k;
      error_log    /path/to/logs/advanced.error.log warn;
  
      location / {
          root  /path/to/advanced/frontend/web;
  
          try_files  $uri /frontend/web/index.php?$args;
  
          # avoiding processing of calls to non-existing static files by Yii
          location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
              access_log  off;
              expires  360d;
  
              try_files  $uri =404;
          }
      }
  
      location /admin {
          alias  /path/to/advanced/backend/web;
  
          rewrite  ^(/admin)/$ $1 permanent;
          try_files  $uri /backend/web/index.php?$args;
      }
  
      # avoiding processing of calls to non-existing static files by Yii
      location ~ ^/admin/(.+\.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar))$ {
          access_log  off;
          expires  360d;
  
          rewrite  ^/admin/(.+)$ /backend/web/$1 break;
          rewrite  ^/admin/(.+)/(.+)$ /backend/web/$1/$2 break;
          try_files  $uri =404;
      }
  
      location ~ \.php$ {
          include  fastcgi_params;
          # check your /etc/php5/fpm/pool.d/www.conf to see if PHP-FPM is listening on a socket or port
          fastcgi_pass  unix:/var/run/php5-fpm.sock; ## listen for socket
          #fastcgi_pass  127.0.0.1:9000; ## listen for port
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          try_files  $uri =404;
      }
      #error_page  404 /404.html;
  
      location = /requirements.php {
          deny all;
      }
  
      location ~ \.(ht|svn|git) {
          deny all;
      }
  }

你可能感兴趣的:(Yii2 同一域名处理前后台方法)