2016-10-07 2 views
1

Von: http://www.yiiframework.com/wiki/799/yii2-app-advanced-on-single-domain-apache-nginx/#hh2Konfigurieren Yii2 Advanced auf einzelne Domäne mit mehreren Backends

Es funktioniert, aber ich habe ein anderes Backend erstellt.

Dies ist die .htaccess Konfiguration, die ich habe:

RewriteEngine On  

# End the processing, if a rewrite already occurred 
RewriteRule ^(frontend|backend2)/web/ - [L] 
RewriteRule ^(frontend|backend)/web/ - [L] 

# Handle the case of backend, skip ([S=1]) the following rule, if current matched 
RewriteRule ^backend(/(.*))?$ backend/web/$2 [S=1] 
RewriteRule ^backend2(/(.*))?$ backend2/web/$3 [S=2] 

# handle the case of frontend 
RewriteRule .* frontend/web/$0  

# Uncomment the following, if you want speaking URL 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteRule ^([^/]+/web)/.*$ $1/index.php 

Abschluss Frontend URL: http:// example.com/ -> OK.

Finale Backend-URL: http:// example.com/backend -> Fehler 404.

Finale eine andere Backend-URL: http:// example.com/backend2 -> OK.

+0

Warum 'S' Flags? Verwenden Sie in beiden Fällen [L]. – Bizley

+0

Was ist [L]? Ich weiß es nicht. Ich lerne Yii2. Hilf mir – user3318842

+2

'L' bedeutet' Last' also, wenn diese Regel übereinstimmt, hört es auf, die anderen Regeln zu verarbeiten. Dies ist keine Frage von Yii 2, es ist Apache Rewrite Modul - siehe https://httpd.apache.org/docs/2.4/rewrite/flags.html – Bizley

Antwort

0

Sie benötigen .htaccess nach diesen bearbeiten:

RewriteEngine On 

# End the processing, if a rewrite already occurred 
RewriteRule ^(frontend|backend|backend2)/web/ - [L] 

# Handle the case of backend, skip ([S=2]) two following rules, if current matched 
RewriteRule ^backend(/(.*))?$ backend/web/$2 [S=2] 

# Handle the case of backend2, skip ([S=1]) the following rule, if current matched 
RewriteRule ^backend2(/(.*))?$ backend2/web/$2 [S=1] 

# handle the case of frontend 
RewriteRule .* frontend/web/$0 

# Uncomment the following, if you want speaking URL 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteRule ^([^/]+/web)/.*$ $1/index.php 

Sie müssen backend2/config/main.php bearbeiten:

.... 
    'components' => [ 
     .... 
     'request'=>[ 
      'baseUrl'=>'/backend2', 
     ], 
     'urlManager'=>[ 
      'scriptUrl'=>'/backend2/index.php', 
     ], 
     // use the following, if you want to enable speaking URL for the backend 
//  'urlManager' => [ 
//   'enablePrettyUrl' => true, 
//   'showScriptName' => false, 
//  ], 
    ], 

Außerdem müssen Sie environments/dev/backend2 und environments/prod/backend2 Ordner mit entsprechenden Inhalten erstellen und beheben alle Namespaces und Pfade zu Backend2.

Verwandte Themen