Php 在新的Laravel Apache2安装程序中,无法浏览到除主URL以外的任何内容。错误:在此服务器上找不到请求的URL

Php 在新的Laravel Apache2安装程序中,无法浏览到除主URL以外的任何内容。错误:在此服务器上找不到请求的URL,php,laravel,.htaccess,apache2,virtualhost,Php,Laravel,.htaccess,Apache2,Virtualhost,我用Apache2 Web服务器建立了一个新的Laravel站点,并在同一台服务器上模拟了一个类似工作站点的设置,但每次我浏览到一个URL,即example.com/anythis,它都会给我一个404页面未找到错误。主站点url可以工作,但没有可访问的页面 例如: example.com{{这很好用} example.com/home{{找不到页面错误} example.com/anything-i-put-here{{找不到页面错误} 该网站在其他服务器和本地都可以正常工作,所以我肯定不

我用Apache2 Web服务器建立了一个新的Laravel站点,并在同一台服务器上模拟了一个类似工作站点的设置,但每次我浏览到一个URL,即example.com/anythis,它都会给我一个404页面未找到错误。主站点url可以工作,但没有可访问的页面

例如:

  • example.com{{这很好用}
  • example.com/home{{找不到页面错误}
  • example.com/anything-i-put-here{{找不到页面错误}
该网站在其他服务器和本地都可以正常工作,所以我肯定不是Laravel网站本身坏了。同一台服务器上的另一个laravel站点的设置基本相同(据我所见),运行良好,因此我知道服务器本身设置正确,并且正在为其他站点服务

我是apache2虚拟服务器安装的新手,所以我很确定我没有正确地配置它。我一直在网上搜索,读了很多帖子,建议人们设置apache2.conf和.htaccess文件,基本上和我的文件完全一样,所以我有点不知所措。有人有什么建议吗

apache配置文件(已启用站点中的符号链接):


ServerName example.com
ServerAlias www.example.com
重定向301/https://example.com/
重新启动发动机
RewriteCond%{SERVER_NAME}=example.com
重写规则^https://%{SERVER_NAME}%{REQUEST_URI}[END,NE,R=permanent]
DocumentRoot/var/www/example.com/public\u html/public
ServerName example.com
选项-索引+FollowSymlinks+多视图
允许超越所有
要求所有授权
#SSLRequireSSL
SetHandler“代理:unix:/var/www/example.com/fpm/php7.2-example.sock|fcgi://localhost/"
Include/etc/letsencrypt/options-ssl-apache.conf
sslcertificatefilepath/to/key.pem
SSLCertificateKeyFile路径/to/key.pem
.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>

选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

是的,modrewrite已启用

.htaccess
上的
重写引擎后使用以下代码

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>

选项-多视图-索引
重新启动发动机
重写基/
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

重新编写引擎后,在
.htaccess
中使用以下代码

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>

选项-多视图-索引
重新启动发动机
重写基/
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

文件位于哪里?我当然会删除
包装器,以防这会掩盖错误(反正不需要)。您正在请求站点的HTTPS版本吗?当您请求
example.com/
(即站点根目录)时,它不需要
.htaccess
中的任何内容,因此这可以解释为什么会这样做。在服务器配置中启用多视图,而在
.htaccess
中再次禁用它,这似乎有点愚蠢。应该在服务器配置中的get go中禁用它
site url.com
my site url.com
?您同时使用了这两个域,这是两个独立的域吗?-如果涉及单个域,请使用
example.com
thoughout(根据)。您好,怀特先生。谢谢你的评论。.htaccess文件位于/var/www/example.com/public\u html/public中。与index.php文件位于同一位置。我很肯定这是一个正确的地方拉威尔网站。这是它在同一服务器上的另一个工作Laravel安装上的位置。我的印象是,mod_rewrite包装器用于添加省略的index.php。虽然我可能错了,但这不是我的强项。我正在请求该站点的https版本,因此http应该重定向到https。当你说“它在.htaccess中真的不需要任何东西”时,你是什么意思?是的,对不起,我从其他方法中测试了一些东西,因此在不需要的地方添加了多视图,所以我将这一行恢复到apache配置中的原始
选项-index+FollowSymlinks+MultiViews
。我已经将URL更新到example.com以消除歧义。这里只讨论一个域。
.htaccess
文件在哪里?我当然会删除
包装器,以防这会掩盖错误(反正不需要)。您正在请求站点的HTTPS版本吗?当您请求
example.com/
(即站点根目录)时,它不需要任何<