Символическая ссылка на / project / current / web work, но не на /project/current/web/app.php (Apache / Ubuntu / Symfony2)

Символическая ссылка на / var / www / myproject / current / web / работает, но перечисляет веб-каталог (не очень хорошо).

Символическая ссылка на /var/www/myproject/current/web/app.php не работает и дает мне эту ошибку: запрошенный URL / не был найден на этом сервере.

нет журналов в /var/log/apache2/error.log и эта строка в /var/log/apache2/access.log - ошибка 404

ip - - [17/Mar/2016:06:21:15 -0400] "GET / HTTP/1.1" 404 493 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"

Вот настройка:

Symfony2 + Capisfony + Apache + Ubuntu 14.04.

Вот мой apache2.conf

<Directory />
        Options FollowSymLinks
        AllowOverride all
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Вот .htaccess в / var / www / myproject / current / web

    DirectoryIndex app.php

    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]

RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>

        RedirectMatch 302 ^/$ /app.php/

    </IfModule>
</IfModule>

А вот как я делаю символьную ссылку

rm -rf /var/www/html
ln -s /var/www/myproject/current/web/app.php /var/www/html
service apache2 restart

==> 404

rm -rf /var/www/html
ln -s /var/www/myproject/web/app.php /var/www/html
service apache2 restart

=> У вас нет разрешения на доступ к этому серверу.

[Thu Mar 17 06:44:53.385300 2016] [core:error] [pid 19767] [client 88.14.213.213:51484] AH00037: Symbolic link not allowed or link target not accessible: /var/www/html

person Kaizoku Gambare    schedule 17.03.2016    source источник


Ответы (2)


Я предлагаю вам вместо этого поработать с vhost apache:

Это из книги рецептов symfony: http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html

<VirtualHost *:80>
    ServerName domain.tld
    ServerAlias www.domain.tld

    DocumentRoot /var/www/project/web
    <Directory /var/www/project/web>
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>

    # uncomment the following lines if you install assets as symlinks
    # or run into problems when compiling LESS/Sass/CoffeScript assets
    # <Directory /var/www/project>
    #     Options FollowSymlinks
    # </Directory>

    ErrorLog /var/log/apache2/project_error.log
    CustomLog /var/log/apache2/project_access.log combined
</VirtualHost>

Вы позволяете apache управлять корнем документа, и вы добавляете app_dev.php к URL-адресу, чтобы использовать среду разработки, это удобно, если у вас есть другой env, например, staging, для тестирования продукта env иногда

Чтобы предотвратить вывод файлов в список, добавьте:

Options -Indexes 

в раздел вашего каталога на vhost

person Nicolas    schedule 17.03.2016

Ответ :

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>

AllowOverride None блокировал .htaccess

Спасибо за помощь.

person Kaizoku Gambare    schedule 18.03.2016