Как удалить index.php из роутера Symfony4? - PullRequest
0 голосов
/ 31 мая 2018

Я следовал документации Symfony 4 по настройке веб-сервера.

https://symfony.com/doc/current/setup/web_server_configuration.html

Мой файл .conf в моей конфигурации apache 2.4 в точности соответствует описанию в их документации,Я копирую часть этого здесь:

<Directory /var/www/project/public>
    AllowOverride None
    Require all granted
    Allow from All

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
</Directory>

При переходе на мою платформу все работает нормально, но как только я перехожу на любую страницу, появляется ошибка 404.Если я добавлю index.php в URL, он работает нормально.Не могли бы вы помочь мне выяснить, что происходит?

Например: когда я нахожусь на http://myplatform.com/

, я могу сохранить адрес электронной почты на этой странице.Если я перехожу на http://myplatform.com/index.php/saveEmail, он работает, но со своей страницы мои ссылки перенаправляют меня на http://myplatform.com/saveEmail, и он не работает.

Если я перехожу на http://myplatform.com/index.php тогда все отлично работает.

Как мне удалить index.php из URL?

Спасибо!

Ответы [ 4 ]

0 голосов
/ 08 января 2019

Я не знаю о Symfony.Но он должен работать со всеми проектами apache2 и php.


Сначала вам нужно сделать две вещи:

  1. Необходимо проверить, включен ли модуль перезаписи php,Вы можете сделать это с phpinfo().Запишите это в файл info.php и откройте в браузере: http://localhost/info.php

    Теперь найдите mod_rewrite.Если вы видите mod_rewrite на этой странице, это означает, что mod_rewrite включено.

  2. Если mod_rewrite не включено, включите его.Я включил в Ubuntu 18.04 для Apache с этой командой: $ sudo a2enmod rewrite.Затем перезапустите apache2 $ systemctl restart apache2

, если mod_rewrite включен, тогда будет работать другая конфигурация.


Затем добавьте AllowOverride All в .conf файл:

<Directory /var/www/project/public>
    AllowOverride All
</Directory>

Затем добавьте .htaccess файл в корневой каталог вашего проекта.

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Send would-be 404 requests to Craft
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>

Примечание. Попробуйте добавить файл .htaccess в /var/www/project/.htaccess или в /var/www/project/public/.htaccess.Не уверен, что будет работать.

0 голосов
/ 01 июня 2018

Если вы измените его таким образом, возможно, это сработает,

AllowOverride All
Order Allow,Deny
0 голосов
/ 01 июня 2018

Я нашел проблему.<Directory /var/www/project/public> указывал на неправильный каталог.

0 голосов
/ 31 мая 2018

Эта конфигурация apache не включает перенаправление на index.php для каждого запроса.У вас есть 2 варианта:

• На той же странице есть конфигурация, включающая это перенаправление после предложения: «Используйте следующую оптимизированную конфигурацию, чтобы отключить поддержку .htaccess и повысить производительность веб-сервера:«

• Если вы хотите использовать .htaccess для обработки этого перенаправления, вы можете просто выполнить composer require apache-pack.Эта команда установит .htaccess в ваш публичный каталог.

...