apache .htaccess

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
vano.mig
Сообщения: 73
Зарегистрирован: 2016.11.21, 10:25

apache .htaccess

Сообщение vano.mig »

Ребята, добрый день. Нужна Ваша помощь. Я работаю с Yii2. Нужно поднять проект. Раньше я использовал nginx и все было хорошо, проблем не возникало.
Теперь нужно развернуть Yii2 advanced на apache (никогда с ним не работал) то есть сайт в директории /frontend, админка в директории /backend и кабинет в директории /frontend/modules/cabinet
и у меня сто то не получается.

Вот то что я сделал

в норме htaccess

Код: Выделить всё

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
</IfModule>
 
<IfModule mod_rewrite.c>
    # если /admin, то в backend
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
    RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
    RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L]
    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|js|css|js)/
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^.*$ backend/web/index.php [L]
    RewriteCond %{REQUEST_URI} ^/(assets|css|js|images)
    RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
    RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
    RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
    RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
    RewriteRule ^(.*)$ frontend/web/$1 [L]
    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/
    RewriteCond %{REQUEST_URI} !index.php
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ frontend/web/index.php
</IfModule>
/frontend/web

Код: Выделить всё

AddDefaultCharset UTF-8
RewriteEngine on

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

RewriteRule . index.php
Что я не так сделал?

Пожалуйста помогите решить проблему. Спасибо.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: apache .htaccess

Сообщение skynin »

непонятно, что хотите

если через вирт хосты, то для каждой веб директории субдомен
Для основной можно не делать.

Код: Выделить всё

<VirtualHost *:80>
ServerName backend.yourdomain.ru

   <Directory "/var/www/..../backend/web">
        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

        # use index.php as index file
        #DirectoryIndex index.php

        # ...other settings...
    </Directory>

#ErrorLog ....-error.log
# CustomLog ...-access.log combined

</VirtualHost>

Если через .htacess, то

Код: Выделить всё

# Mod_Rewrite
<IfModule mod_rewrite.c>
  # Enable symlinks
  Options +FollowSymlinks
  # Enable mod_rewrite
  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>
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: apache .htaccess

Сообщение skynin »

самому стало интересно, а вот да. такой шаред хостинг что не дает создавать субдомены

погуглил
yii2-app-advanced on single domain (Apache, Nginx)

Option 1: The Easy Way

https://www.yiiframework.com/wiki/799/y ... ache-nginx
This way should work on any Unix-like OS (MacOSX, GNU/Linux, FreeBSD etc).
All you need to do is to set web server Document Root to frontend/web and inside of it create a symlink to backend/web.
Option 2: The Hard Way
Try this option only if the previous one does not work for you. Because any additional rewrite rules is a performance hit.
To achieve our goal, we need to slightly modify backend configuration, as well as to alter the web server's configuration.

но обычная установка все же:
https://www.yiiframework.com/wiki/827/h ... nvironment
yii2advanced.website.com ---> /home/myself/sites/yii2advanced/frontend/web
admin.yii2advanced.website.com ---> /home/myself/sites/yii2advanced/backend/web
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Ответить