我已经用Apache2网络服务器建立了一个新的Laravel站点,并且模仿了在同一台服务器上类似工作站点的设置,但是每次我浏览到一个URL时,它是site-url / anything它给我一个404页面未找到错误。主站点URL有效,但无法访问任何页面。
例如:
该站点在其他服务器和本地服务器上都可以正常运行,因此可以肯定的是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
在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>