vova07 / yii2-start

Yii2-Start application
Other
273 stars 115 forks source link

404 #77

Closed wtfmrpresident closed 9 years ago

wtfmrpresident commented 9 years ago

добрый день! Установил двигатель, настроил админку, там все работает как швейцарские часы, но вот с фронтендом непонятная проблема.

когда пытаюсь перейти в блок /blogs/ ; /login/ сервер выдает 404: Apache error.log: File does not exist: /var/www/test.loc/www/frontend/web/blogs

веб-сервер настроен на папку {yii-start}/frontend/web

wtfmrpresident commented 9 years ago

без urlManager работает, а вот с ним - нет)

alexssdd commented 9 years ago

Внимательно прочтите README, апачь должен быть настроен на корень сайта, а у Вас на директорию frontend/web/, поменяйте на DocumentRoot /my/path/to/yii2-star

y0rker commented 9 years ago

Присоединяюсь к вопросу, настроен на корень сайта DocumentRoot /my/path/to/yii2-star. Но выдает ошибку 500, не доходит до /frontend/web/index.php

vova07 commented 9 years ago

А можете привести тело ошибки? 500 это внутренняя ошика сервера, и она может быть связана с разными проблемами, в том числе и те что не касаются приложения.

y0rker commented 9 years ago
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Конфиг nginx

server {
    listen 212.224.112.72:80;
    server_name *.devs.domain.org;

    access_log   /home/domain/devs/logs/nginx.access_log  main;
    error_log /home/domain/devs/logs/nginx.error.log;

    set $sub "";

    if ($host ~* ^([a-z0-9]+).devs.domain.org$) {
        set $sub $1;
    }

    location / {
    proxy_pass http://212.224.112.72:9001;
    proxy_redirect http://212.224.112.72:9001/ /;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    }

    location ~* /(content|defaults)/ {
        root /home/domain/devs/$sub/www/domain/statics/web;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
    root /home/domain/devs/$sub/www/domain/frontend/web;
    }
}

Конфиг апача

listen 9001
<VirtualHost *:9001>
     DirectoryIndex index.php
     SuexecUserGroup xxx xxx
     CustomLog /home/domain/devs/logs/dev.log combined
     ErrorLog /home/domain/devs/logs/dev.error.log

     UseCanonicalName Off
     VirtualDocumentRoot /home/domain/devs/%1/www/domain
     VirtualScriptAlias  /home/domain/devs/%1/www/domain

     AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
     AddType application/x-httpd-php-source .phps
</VirtualHost>

Вроде все верно настроено, если указывать в апаче на фронтенд/веб, то работает только главная

vova07 commented 9 years ago

А лог ошибки что говорит? Там нет ничего что могло бы прояснить ситуацию?

y0rker commented 9 years ago

все, что от апача

[Wed Oct 22 13:20:41 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.5.16 configured -- resuming normal operations
[Wed Oct 22 13:21:04 2014] [notice] caught SIGTERM, shutting down
[Wed Oct 22 13:21:04 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Wed Oct 22 13:21:04 2014] [notice] Digest: generating secret for digest authentication ...
[Wed Oct 22 13:21:04 2014] [notice] Digest: done
[Wed Oct 22 13:21:04 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.5.16 configured -- resuming normal operations

все, что от nginx

213.159.70.142 - - [22/Oct/2014:13:37:53 +0400] "GET /themes/pmahomme/img/logo_right.png HTTP/1.1" 200 4548 "http://9015.devs.fragme.org/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
213.159.70.142 - - [22/Oct/2014:13:37:53 +0400] "GET /phpmyadmin.css.php?server=1&lang=ru&collation_connection=utf8_general_ci&token=8bd9af42e4c689e803d8cf3073124562&nocache=4228589481ltr HTTP/1.1" 200 98235 "http://9015.devs.fragme.org/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
213.159.70.142 - - [22/Oct/2014:13:37:53 +0400] "GET /js/messages.php?lang=ru&db=&collation_connection=utf8_general_ci&token=8bd9af42e4c689e803d8cf3073124562 HTTP/1.1" 200 26270 "http://9015.devs.fragme.org/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
213.159.70.142 - - [22/Oct/2014:13:37:53 +0400] "GET /themes/dot.gif HTTP/1.1" 200 43 "http://9015.devs.fragme.org/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
213.159.70.142 - - [22/Oct/2014:13:37:53 +0400] "GET /js/get_image.js.php?theme=pmahomme HTTP/1.1" 200 6435 "http://9015.devs.fragme.org/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
213.159.70.142 - - [22/Oct/2014:13:37:58 +0400] "GET /js/get_scripts.js.php?lang=ru&collation_connection=utf8_general_ci&token=8bd9af42e4c689e803d8cf3073124562&scripts[]=jquery/jquery-1.8.3.min.js&scripts[]=ajax.js&scripts[]=keyhandler.js&scripts[]=jquery/jquery-ui-1.9.2.custom.min.js&scripts[]=jquery/jquery.sprintf.js&scripts[]=jquery/jquery.cookie.js&scripts[]=jquery/jquery.mousewheel.js&scripts[]=jquery/jquery.event.drag-2.2.js&scripts[]=jquery/jquery-ui-timepicker-addon.js&scripts[]=jquery/jquery.ba-hashchange-1.3.js&scripts[]=jquery/jquery.debounce-1.0.5.js&scripts[]=jquery/jquery.menuResizer-1.0.js&scripts[]=cross_framing_protection.js&scripts[]=rte.js&scripts[]=tracekit/tracekit.js&scripts[]=error_report.js&scripts[]=doclinks.js&scripts[]=functions.js&scripts[]=navigation.js&scripts[]=indexes.js&scripts[]=common.js&scripts[]=codemirror/lib/codemirror.js&scripts[]=codemirror/mode/sql/sql.js&scripts[]=codemirror/addon/runmode/runmode.js HTTP/1.1" 200 1046746 "http://9015.devs.fragme.org/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
213.159.70.142 - - [22/Oct/2014:13:37:58 +0400] "GET /themes/pmahomme/img/sprites.png HTTP/1.1" 200 42457 "http://9015.devs.fragme.org/phpmyadmin.css.php?server=1&lang=ru&collation_connection=utf8_general_ci&token=8bd9af42e4c689e803d8cf3073124562&nocache=4228589481ltr" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "192.168.0.166"
y0rker commented 9 years ago

Причем старые версии вашего приложения работают хорошо, если настроен апач на папку frontend/web

vova07 commented 9 years ago

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

<VirtualHost *:80>
    ServerName www.yii2-start.domain # You need to change it to your own domain  
    ServerAlias yii2-start.domain # You need to change it to your own domain  
    DocumentRoot /my/path/to/yii2-start # You need to change it to your own path  
    <Directory /my/path/to/yii2-start> # You need to change it to your own path  
        AllowOverride All  
    </Directory>  
</VirtualHost>
y0rker commented 9 years ago

Добрый день! Добрался до логов htaccess

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100ca4d88/initial] (3) [perdir /home/fragme/devs/9015/www/fragme/] strip per-dir prefix: /home/fragme/devs/9015/www/fragme/frontend/ -> frontend/

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100ca4d88/initial] (3) [perdir /home/fragme/devs/9015/www/fragme/] applying pattern '^(.*)$' to uri 'frontend/'

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100ca4d88/initial] (2) [perdir /home/fragme/devs/9015/www/fragme/] rewrite 'frontend/' -> 'web/frontend/'

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100ca4d88/initial] (3) [perdir /home/fragme/devs/9015/www/fragme/] add per-dir prefix: web/frontend/ -> /home/fragme/devs/9015/www/fragme/web/frontend/

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100ca4d88/initial] (2) [perdir /home/fragme/devs/9015/www/fragme/] trying to replace prefix /home/fragme/devs/9015/www/fragme/ with /

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100ca4d88/initial] (1) [perdir /home/fragme/devs/9015/www/fragme/] internal redirect with /web/frontend/ [INTERNAL REDIRECT]

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100cb06f0/initial/redir#1] (3) [perdir /home/fragme/devs/9015/www/fragme/] add path info postfix: /home/fragme/devs/9015/www/fragme/frontend/web/frontend -> /home/fragme/devs/9015/www/fragme/frontend/web/frontend/

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100cb06f0/initial/redir#1] (3) [perdir /home/fragme/devs/9015/www/fragme/] strip per-dir prefix: /home/fragme/devs/9015/www/fragme/frontend/web/frontend/ -> frontend/web/frontend/

[17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100cb06f0/initial/redir#1] (3) [perdir /home/fragme/devs/9015/www/fragme/] applying pattern '^(.*)$' to uri 'frontend/web/frontend/'

 [17/Nov/2014:13:11:55 +0300] [9015.devs.fragme.org/sid#7f6100943688][rid#7f6100cb06f0/initial/redir#1] (2) [perdir /home/fragme/devs/9015/www/fragme/] rewrite 'frontend/web/frontend/' -> 'web/frontend/web/frontend/'

Т.е. идет бесконечный редирект

vova07 commented 9 years ago

А у вас mode_rewrite включен? Проверьте если он реально работает.

y0rker commented 9 years ago

у меня на других поддоменах все ок. Все включено. Опубликовал проблему так же на тостере, может там помогут

y0rker commented 9 years ago

Вот до чего дошел сам (рабочая версия):

# Mod_Autoindex
<IfModule mod_autoindex.c>
    # Disable Indexes
    Options -Indexes
</IfModule>

# Mod_Rewrite
<IfModule mod_rewrite.c>

    Options +FollowSymlinks
    # Enable mod_rewrite
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php

    # Backend redirect
    RewriteCond %{REQUEST_URI} ^/backend
    RewriteRule ^backend/(.*)$ backend/web/$1 [L]

    # Statics redirect
    RewriteCond %{REQUEST_URI} ^/statics
    RewriteRule ^statics/(.*)$ statics/web/$1 [L]

    # Frontend redirect
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteRule ^(.*)$ frontend/web/$1
</IfModule>
vova07 commented 9 years ago

И так все заработало? Если да, то странная чуток ситуация: index.php на который делается редирект всех запросов отсутсвует в корне приложения, так что чуток непонятна рабочая ситуация.

y0rker commented 9 years ago

так работает, но я понимаю что это не верно. Стараюсь сейчас избавиться от

 RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php

Выдает главную страницу, но дальше, /blogs/ и тд пишет 404 страницу

vova07 commented 9 years ago

Проверьте все-таки mode_rewrite. Самый простой способ, это добавить в .htaccess флаг:

...
<IfModule mod_rewrite.c>

    // Tell PHP that the mod_rewrite module is ENABLED.
    SetEnv HTTP_MOD_REWRITE On
...

Дальше в ПХП проверяем наличие флага: array_key_exists('HTTP_MOD_REWRITE', $_SERVER);

y0rker commented 9 years ago
if (array_key_exists('HTTP_MOD_REWRITE', $_SERVER))
    echo 'ok!';

Выдало ок. Не парься, я как-нибудь смогу решить проблему и отпишусь тут :)

vova07 commented 9 years ago

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

y0rker commented 9 years ago

Сделал :) Скидываю как есть .htaccess в корне

# Mod_Autoindex
<IfModule mod_autoindex.c>
    # Disable Indexes
    Options -Indexes
</IfModule>

# Mod_Rewrite
<IfModule mod_rewrite.c>
Options +FollowSymlinks
 # Enable mod_rewrite
RewriteEngine On
RewriteBase / # ЭТА СТРОЧКА ДОБАВЛЕНА
# Backend redirect
RewriteCond %{REQUEST_URI} ^/backend
RewriteRule ^backend/(.*)$ backend/web/$1 [L]
# Statics redirect
RewriteCond %{REQUEST_URI} ^/statics
RewriteRule ^statics/(.*)$ statics/web/$1 [L]
# Frontend redirect
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteRule ^(.*)$ frontend/web/$1
</IfModule>

htaccess фронтенда

# Mod_Rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / # ЭТА СТРОЧКА ДОБАВИЛАСЬ
# 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>

htaccess бекенда

# Mod_Rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /backend # ЭТА СТРОЧКА ДОБАВИЛАСЬ
# Если это папка или файл, открываем её/его
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# В противном случае перенаправляем на index.php
RewriteRule . index.php
</IfModule>

Как оказалось все банально :( Думаю тему можно закрыть, т.к. это как раз решение той проблемы, которая была описана в теме (после правильного указания путей). Спасибо большое за уделенное внимание!