Как удалить index.php с маршрутизатора Symfony4?

Я слежу за документацией 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-адреса?

Спасибо!

У вас есть .htaccess в вашем каталоге общественный?

Franck Gamess 31.05.2018 07:52

Я использую файл .conf в папке конфигурации с поддержкой сайтов apache

Miles M. 31.05.2018 18:54

Но да, он был сгенерирован apache-pack от композитора в моем публичном репо. Я скопировал все, что он содержит, из моего файла .conf в папку конфигурации apache «site-enabled». Это правильно?

Miles M. 31.05.2018 20:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
8
3
9 559
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

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

Спасибо. Я использовал упомянутую вами оптимизированную версию. Код, который я вставил выше, на самом деле был из этого раздела. Я также установил apache-pack. Я немного застрял здесь.

Miles M. 31.05.2018 19:43

Должен ли я скопировать и вставить весь .htaccess в мой общедоступный каталог внутри файла .conf в режиме site-enabled?

Miles M. 31.05.2018 20:17

На мой взгляд, есть только один правильный способ сделать это. Вот с композитором требуется apache-pack. Зачем много работать, когда проблема уже решена?

Halfstop 16.11.2018 05:39

Лично я использую apache-pack только для разработки и производства, я использую в соответствии с рекомендациями конфигурацию без .htaccess для оптимизации производительности.

Florian Hermann 16.11.2018 10:05

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

AllowOverride All
Order Allow,Deny

Order Allow, Deny не поддерживается Apache 2.4. Я не использую .htaccess, поэтому мне не нужно выполнять AllowOverride All. Я пытался, но безуспешно.

Miles M. 01.06.2018 22:51

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

Ответ принят как подходящий

Не знаю насчет 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 включен, то другая конфигурация будет работать.


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

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

  1. Затем добавьте файл .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. Не уверен, что сработает.

enable mod_rewrite идеально подходит для меня. Thans

juanitourquiza 27.01.2019 03:15

Другие вопросы по теме