Php 在新的Laravel Apache2安装程序中,无法浏览到除主URL以外的任何内容。错误:在此服务器上找不到请求的URL
我用Apache2 Web服务器建立了一个新的Laravel站点,并在同一台服务器上模拟了一个类似工作站点的设置,但每次我浏览到一个URL,即example.com/anythis,它都会给我一个404页面未找到错误。主站点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{{找不到页面错误} 该网站在其他服务器和本地都可以正常工作,所以我肯定不
- example.com{{这很好用}
- example.com/home{{找不到页面错误}
- example.com/anything-i-put-here{{找不到页面错误}
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/
(即站点根目录)时,它不需要任何<