Невозможно найти что-либо, кроме основного URL-адреса в новой Laravel настройке Apache2. ОШИБКА: запрошенный URL не найден на этом сервере - PullRequest
1 голос
/ 04 марта 2020

Я создал новый Laravel сайт с веб-сервером Apache2 и имитировал настройку аналогичного рабочего сайта на том же сервере, но каждый раз, когда я перехожу по URL-адресу example.com/ что-нибудь это дает мне ошибку 404 страницы не найдена. URL основного сайта работает, но страницы не доступны.

Например:

  • example.com {{Это отлично работает}}
  • example.com / home {{Ошибки со страницей не найдены}}
  • example.com / everything-i-put-here {{Ошибки со страницей не найдены}}

Сайт работает нормально на других серверах и локально, так что я уверен, что это не сам сайт Laravel, который сломан. Другой сайт laravel на том же сервере с практически одинаковыми настройками (насколько я вижу) работает нормально, поэтому я знаю, что сам сервер настроен правильно и обслуживает другие сайты.

Я довольно новичок в настройке виртуального сервера apache2, так что я уверен, что я просто не настроил это правильно. Я просматривал inte rnet и прочитал так много постов, рекомендующих людям настроить файлы apache2.conf и .htaccess в основном так же, как они у меня, так что я немного растерялся. Кто-нибудь получил какие-либо предложения?

apache файл конфигурации (символическая ссылка на сайтах с поддержкой):

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect 301 / https://example.com/
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
     DocumentRoot /var/www/example.com/public_html/public
     ServerName example.com

     <Directory /var/www/example.com/public_html/public>
        Options -Indexes +FollowSymlinks +MultiViews
        AllowOverride All
        Require all granted
#       SSLRequireSSL
     </Directory>
     <FilesMatch \.php$>
         SetHandler "proxy:unix:/var/www/example.com/fpm/php7.2-example.sock|fcgi://localhost/"
     </FilesMatch>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile path/to/key.pem
SSLCertificateKeyFile path/to/key.pem
</VirtualHost>

.htaccess файл:

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

    RewriteEngine On

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

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

и да, modrewrite включен

1 Ответ

0 голосов
/ 04 марта 2020

Используйте следующий код в .htaccess после RewriteEngine On

RewriteBase /

Так что ваш .htaccess должен выглядеть следующим образом:

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

RewriteEngine On
RewriteBase /
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
...