Я слежу за документацией 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-адреса?
Спасибо!
Я использую файл .conf в папке конфигурации с поддержкой сайтов apache
Но да, он был сгенерирован apache-pack от композитора в моем публичном репо. Я скопировал все, что он содержит, из моего файла .conf в папку конфигурации apache «site-enabled». Это правильно?






Эта конфигурация apache не включает перенаправление на index.php для каждого запроса. У вас есть 2 варианта:
• На той же странице есть конфигурация, которая включает это перенаправление после этого предложения: «Используйте следующую оптимизированную конфигурацию, чтобы отключить поддержку .htaccess и повысить производительность веб-сервера:»
• Если вы хотите использовать .htaccess для обработки этого перенаправления, вы можете просто выполнить composer require apache-pack. Эта команда установит .htaccess в ваш общедоступный каталог.
Спасибо. Я использовал упомянутую вами оптимизированную версию. Код, который я вставил выше, на самом деле был из этого раздела. Я также установил apache-pack. Я немного застрял здесь.
Должен ли я скопировать и вставить весь .htaccess в мой общедоступный каталог внутри файла .conf в режиме site-enabled?
На мой взгляд, есть только один правильный способ сделать это. Вот с композитором требуется apache-pack. Зачем много работать, когда проблема уже решена?
Лично я использую apache-pack только для разработки и производства, я использую в соответствии с рекомендациями конфигурацию без .htaccess для оптимизации производительности.
Если вы измените его таким образом, возможно, это сработает,
AllowOverride All
Order Allow,Deny
Order Allow, Deny не поддерживается Apache 2.4. Я не использую .htaccess, поэтому мне не нужно выполнять AllowOverride All. Я пытался, но безуспешно.
Я нашел проблему. <Directory /var/www/project/public> указывал не на тот каталог.
Не знаю насчет Symfony. Но он должен работать со всеми проектами apache2 и php.
Сначала вам нужно сделать две вещи:
Вам необходимо проверить, включен ли модуль перезаписи php. вы можете сделать это с помощью phpinfo(). Запишите это в файл info.php и откройте в браузере: http: //localhost/info.php
Теперь найдите mod_rewrite. Если вы видите mod_rewrite на этой странице, это означает, что mod_rewrite включен.
mod_rewrite не включен, включите его. Я включил в ubuntu 18.04 для apache с помощью этой команды: $ sudo a2enmod rewrite. Затем перезапустите apache2 $ systemctl restart apache2mod_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. Не уверен, что сработает.
enable mod_rewrite идеально подходит для меня. Thans
У вас есть .htaccess в вашем каталоге общественный?