Установите Symfony 4 в подпапке DocumentRoot - PullRequest
0 голосов
/ 29 апреля 2019

Я надеюсь, что этот вопрос не является дубликатом, но я нашел статьи или вопросы по этому поводу только для старых версий Symfony. Я новичок в Symfony 4, и я хотел бы создать новое приложение с ним и установить его как часть уже существующего веб-сайта (domain ниже). Приложение Sf 4 переходит в подкаталог admin/, показанный в иерархии ниже. domain использует TYPO3 CMS, но я не уверен, что это имеет значение для этого вопроса.

Во-первых, вот структура каталогов:

/home/webuser/domain/
    public/ (this is the document root for "domain.localhost")
        admin/ (the Symfony app goes here)
            public/
            …
        …
        typo3/
        .htaccess
        index.php
        …
        composer.json

В настоящее время я работаю над сайтом на своем локальном компьютере, и я хотел бы получить доступ к корню приложения Symfony с domain.localhost/admin. Я использую виртуальный хост Apache, а папка domain/public является корнем документа domain:

<VirtualHost *:80>
    ServerName domain.localhost
    DocumentRoot "/home/webuser/www/domain/public"
</VirtualHost>

Я попытался добавить следующее правило перезаписи в VirtualHost:

<VirtualHost *:80>
    ServerName domain.localhost
    DocumentRoot "/home/webuser/www/domain/public"
    RewriteEngine On
    RewriteRule "^/admin/(.*)$" "/admin/public/$1"
    LogLevel trace1
</VirtualHost>

Но, похоже, это работает, только когда я захожу на http://domain.localhost/admin/: я вижу страницу «Добро пожаловать в Symfony 4.2.7». Как только я пытаюсь посетить подстраницу, я получаю ошибку 404. Я попытался создать свою первую страницу в lucky/number, как описано в документации здесь , и, глядя на журнал ошибок Apache, у меня есть такие строки:

[Mon Apr 29 18:52:09.472043 2019] [rewrite:trace1] [pid 22250:tid 140404453660416] mod_rewrite.c(483): [client ::1:43084] ::1 - - [domain.localhost/sid#55a33c704bf8][rid#7fb260002bd0/initial] [perdir /home/webuser/www/domain/public/] pass through /home/webuser/www/domain/public/admin/public/lucky

[Mon Apr 29 18:52:09.472087 2019] [core:info] [pid 22250:tid 140404453660416] [client ::1:43084] AH00128: File does not exist: /home/webuser/www/domain/public/admin/public/lucky/number

Теперь у TYPO3 есть .htaccess файл, содержащий перезаписи URL, но я не думаю, что они мешают. Ниже я просто добавил себя в папку admin/ в правиле после комментария, который начинается с «Остановить перезапись», чтобы мы не перенаправлялись на домашнюю страницу веб-сайта domain, когда файл не найден:

<IfModule mod_rewrite.c>

    # Enable URL rewriting
    RewriteEngine On

    # Store the current location in an environment variable CWD to use
    # mod_rewrite in .htaccess files without knowing the RewriteBase
    RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
    RewriteRule ^.*$ - [E=CWD:%2]

    # Rule for versioned static files, configured through:
    # - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
    # - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
    # IMPORTANT: This rule has to be the very first RewriteCond in order to work!
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ %{ENV:CWD}$1.$3 [L]

    # Access block for folders
    RewriteRule _(?:recycler|temp)_/ - [F]
    RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
    RewriteRule ^(?:vendor|typo3_src|typo3temp/var) - [F]
    RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ - [F]

    # Block access to all hidden files and directories with the exception of
    # the visible content from within the `/.well-known/` hidden directory (RFC 5785).
    RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
    RewriteCond %{SCRIPT_FILENAME} -d [OR]
    RewriteCond %{SCRIPT_FILENAME} -f
    RewriteRule (?:^|/)\. - [F]

    # Stop rewrite processing, if we are in the typo3/ directory or any other known directory
    # NOTE: Add your additional local storages here
    RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico|admin/) - [L]

    # If the file/symlink/directory does not exist => Redirect to index.php.
    # For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]

</IfModule>

Рабочий сервер будет выделенной системой, поэтому я могу изменять все, что захочу.

1 Ответ

0 голосов
/ 30 апреля 2019

Оказывается, мне просто нужно было установить пакет Apache, как в этот ответ

...