无法浏览到新的Laravel Apache2设置上的主要URL以外的任何内容。错误:在此服务器上找不到请求的URL

问题描述 投票:0回答:1

我已经用Apache2网络服务器建立了一个新的Laravel站点,并且模仿了在同一台服务器上类似工作站点的设置,但是每次我浏览到一个URL时,它是site-url / anything它给我一个404页面未找到错误。主站点URL有效,但无法访问任何页面。

例如:

  • site-url.com {{可以正常使用}}
  • site-url.com/home {{找不到页面错误}}
  • site-url.com/anything-i-put-here {{找不到页面错误}}

该站点在其他服务器和本地服务器上都可以正常运行,因此可以肯定的是Laravel站点本身并没有损坏。同一台服务器上的另一个laravel站点具有基本相同的设置(据我所知)可以正常工作,因此我知道服务器本身已正确设置并正在为其他站点提供服务。

我对apache2虚拟服务器设置来说还很陌生,因此非常确定我没有正确配置此设置。我一直在互联网上浏览,阅读了如此多的文章,建议人们设置apache2.conf和.htaccess文件,使其与我拥有的文件完全相同,因此即时消息有点茫然。有人有任何建议吗?

Apache配置文件(在启用了站点的情况下符号链接:]

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

     <Directory /var/www/my-site-url.com/public_html/public>
        Options -Indexes +FollowSymlinks +MultiViews
        AllowOverride All
        Require all granted
#       SSLRequireSSL
     </Directory>
     <FilesMatch \.php$>
         SetHandler "proxy:unix:/var/www/my-site-url.com/fpm/php7.2-my-site-url.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

php laravel .htaccess apache2 virtualhost
1个回答
0
投票

在root上创建.htaccess文件。尝试这样

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

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>
© www.soinside.com 2019 - 2024. All rights reserved.