apache设置.htaccess rewriteRule与laravel

Posted

技术标签:

【中文标题】apache设置.htaccess rewriteRule与laravel【英文标题】:apache setup .htaccess rewriteRule with laravel 【发布时间】:2020-07-17 06:45:06 【问题描述】:

我正在设置 (laravelproj/public/.htaccess)

我在 2 个不同服务器上工作的示例如下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    RewriteEngine On

    RewriteCond %HTTPS off
    RewriteRule ^(.*)$ https://takaful.hsn93.com/$1 [R,L]

    # 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>

现在我正在cent OS apache (httpd) 上尝试它(如果重要的话) 当我输入链接 (http://example.com/)

我没有任何其他问题,除了这个链接^没有参数^

禁止

您无权访问此服务器上的 /。

为了让它工作,我要评论这一行(检查请求的目录是否为非目录的条件:

 #RewriteCond %REQUEST_FILENAME !-d
 RewriteCond %REQUEST_FILENAME !-f
 RewriteRule ^ index.php [L]

这是有道理的,因为 / 当然是一个目录..

但是为什么这个 .htaccess 配置在所有其他机器上都有效? 这台机器上有什么不同使得这种情况从 apache 返回了一个禁止项

【问题讨论】:

Laravel ships with an .htaccess - 除非您需要特殊的东西,否则不要修改这些部分。 403 可能与 .htaccess 无关,只是一个 Apache 配置问题。尝试删除您的 .htaccess 以确认。 There 是 many 问题/答案 here 关于修复 403 的问题。 @Don'tPanic laravel 工作完美期待 url (/) 它没有被路由到 index.php .. 这就是为什么我不得不改变它.. 我发布了我相信的虚拟主机配置是的.. 我会再看看你发布的内容,但早些时候我找不到与我类似的问题 @Don'tPanic 谢谢,我现在把原来的htaccess文件在发现(index.php)需要在httpd.conf文件中建立索引 【参考方案1】:

我发现问题在于 httpd.conf

不索引 (index.php) 文件只是 (index.html)

所以我修改了它

<IfModule dir_module>
    DirectoryIndex index.html
    DirectoryIndex index.php
</IfModule>

【讨论】:

他们应该在一行 - DirectoryIndex index.html index.php。如有疑问,check the docs!

以上是关于apache设置.htaccess rewriteRule与laravel的主要内容,如果未能解决你的问题,请参考以下文章

apache配置rewrite及.htaccess文件(转载)

.htaccess中的apache rewrite规则详解

apache_conf .htaccess URL ReWriting

htaccess 用于 apache 未读取的干净 url?

Apache伪静态(Rewrite).htaccess文件详解

htaccess apache mod_rewrite & authentication:奇怪的行为