2015-02-09 2 views
1

Я новичок в yii2, я следую инструкциям по установке yii2 по композитору, но застрял в конфигурации перезаписи url на сервере ubuntu.yii2 url rewrite config

мой apache2 конфигурационный файл следующим образом:

Alias /math2 /usr/share/math2/frontend/web 
Alias /admin /usr/share/math2/backend/web 

<Directory "/usr/local/math2/frontend/web"> 
    RewriteEngine On 
    # if a directory or a file exists, use it directly 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    # otherwise forward it to index.php 
    RewriteBase /math2 
    #RewriteRule . index.php 
    RewriteRule ^.*$ index.php [L] 
</Directory> 

<Directory "/usr/local/math2/backend/web"> 
    # if a directory or a file exists, use it directly 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    # otherwise forward it to index.php 
    RewriteBase /admin 
    RewriteRule . index.php 
</Directory> 

и конфигурационный файл Yii следующим образом:

<?php 
return [ 
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 
    'components' => [ 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ], 
     'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'showScriptName' => false 
     ], 
    ], 
]; 

Мой VirtualHost следующим

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/html 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

</VirtualHost> 

я могу зайти на сайт, как правило по http://localhost/math2/index.php/site/about

, но предполагается, что вас посетит http://localhost/math2/site/about , которому я получаю ошибку 404.

+0

ли Apache 404 или Yii 404 ошибка? Это очень важно. Если это apache 404, то это неправильная конфигурация Apache. –

+0

Это apache 404 –

+0

Кажется, вам нужно настроить виртуальные хосты apache для этого. см. http://www.yiiframework.com/forum/index.php/topic/47615-yii-20-basci-app-i-miss-the-htaccess-file/ – apoq

ответ

1

На самом деле я не использую псевдонимы с виртуальными хостами для получения похожих URL-адресов. У меня есть в проекте корневой .htaccess:

Options -Indexes 
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 

В фронтэнда/веб и бэкэнд/веб-я есть .htaccess, как:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php