gpt4 book ai didi

php - 如果没有/index.php,子文件夹中带有别名的 Apache2.4 和 Laravel 5.4 将无法工作

转载 作者:行者123 更新时间:2023-12-05 07:30:30 25 4
gpt4 key购买 nike

我在 apache 服务器 conf 文件 (/etc/apache2/mods-enabled/alias.conf) 上创建了一个别名来定位公共(public)文件夹。

    Alias /laravel/ "/home/user/dev/web/laravel/public/"

<Directory "/home/user/dev/web/laravel/public/">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Require all granted
</Directory>

另外,我写了下面的.htaccess

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

RewriteEngine On

RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/laravel/(.*) /laravel/index.php/$1 [L]

</IfModule>

现在,当我访问 http://IP/laravel 时,index.php 会按预期加载。但是如果我要调用像 http://IP/laravel/load_examples 这样的 GET 路由,我会返回一个 NOT FOUND 错误。

相反,如果我访问 http://IP/laravel/index.php/load_examples,路由会按预期加载。

在我看来,.htaccess 和重写规则出了点问题。

我尝试了在 SO 和其他地方找到的所有内容,但到目前为止找不到任何解决方案。

有什么想法吗?

最佳答案

在显示的代码块之前的别名中尝试添加:

DocumentRoot/home/user/dev/web/laravel/public/

然后为您的 .htaccess 试试这个:

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

RewriteEngine On

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

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

</IfModule>

关于php - 如果没有/index.php,子文件夹中带有别名的 Apache2.4 和 Laravel 5.4 将无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52233685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com