2017-08-21 2 views
0

Projekt Yii2 Wesentliche [V2.0.12]:Einfache URL Yii2

.htaccess

Options +FollowSymLinks 
IndexIgnore */* 
RewriteEngine on 
AddDefaultCharset utf-8 

RewriteCond %{REQUEST_URL} !^/(web) 
RewriteRule ^assets/(.*)$ /web/assets/$1 [L] 
RewriteRule ^css/(.*)$ /web/css/$1 [L] 
RewriteRule ^fonts/(.*)$ /web/fonts/$1 [L] 
RewriteRule ^js/(.*)$ /web/js/$1 [L] 
RewriteRule ^images/(.*)$ /web/images/$1 [L] 
#RewriteRule (.*)$ /web/$1 
RewriteRule ^(.*)?$ /web/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /web/index.php 

und

web/.htaccess 

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . index.php 

config \ web.php

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

funktioniert nicht .. Warum?! Ich verstehe nicht, warum es nicht funktioniert .. und sag mir bitte, was ist mein Fehler?

enter image description here

+0

Vielleicht brauchen Sie 'RewriteBase' in' .htaccess' Datei zu setzen, wenn Ihr Ordner im Unterverzeichnis ist. –

+0

nein, test/web, ich benutze OpenServer – Zunder

+0

Ich bin nicht mit OpenServer vertraut, aber gibt es nicht die Möglichkeit, den virtuellen Host von Anfang an auf den 'web'-Ordner zu verweisen? Sie können alle Umleitungen in diesem Fall vermeiden ... – Bizley

Antwort

0

Bitte geben Sie Ihre Basis-URL in config/web.php

use \yii\web\Request; 

$baseUrl = str_replace('/web', '', (new Request)->getBaseUrl()); 
$params = require(__DIR__ . '/params.php'); 

$config = [ 
'components' => [ 
'request' => [ 
      //DEFINE FOR REST API. RESPONSE SHOULD BE JSON FORMAT 
      'parsers' => [ 
       'application/json' => 'yii\web\JsonParser', 
      ], 
      // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 
      'cookieValidationKey' => 'basic', 
      'baseUrl' => $baseUrl, 
     ], 
],