Laravel htaccess 问题

Posted

技术标签:

【中文标题】Laravel htaccess 问题【英文标题】:Laravel htaccess issue 【发布时间】:2013-04-03 11:52:36 【问题描述】:

我正在尝试设置一个网站。该站点在我们一直用来向客户展示站点的实时开发服务器上运行良好。这是来自现场开发的 htaccess(工作正常):

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    #RewriteCond %HTTPS !=on
    #RewriteCond %HTTP_HOST !^www\..+$ [NC]
    #RewriteRule ^ http://www.%HTTP_HOST%REQUEST_URI [R=301,L]

    # Rewrite to 'public' folder
    RewriteCond %HTTP_HOST ^livedev.domain.com$
    RewriteCond %REQUEST_URI !public/
    RewriteRule (.*) public/$1 [L]
</IfModule>
AuthType Basic
AuthName "dev16"
AuthUserFile "/home/site/.htpasswds/public_html/passwd"
require valid-user

这是来自现场网站的 .htaccess:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    #RewriteCond %HTTPS !=on
    #RewriteCond %HTTP_HOST !^www\..+$ [NC]
    #RewriteRule ^ http://www.%HTTP_HOST%REQUEST_URI [R=301,L]

    # Rewrite to 'public' folder
    RewriteCond %HTTP_HOST ^livesite.co.uk$
    RewriteCond %REQUEST_URI !public/
    RewriteRule (.*) public/$1 [L]
</IfModule>

除了 HTTP_HOST 和删除身份验证之外,这 2 个是相同的。

它给了我一个通用的“内部服务器错误”。

我尝试删除 .htaccess 的内容,这只是让我找不到页面,所以问题肯定在于 .htaccess。

一个总.htaccess处女,我可以采取什么步骤来找到问题的原因?

谢谢

(这是 Laravel 3.2.13)

【问题讨论】:

Options +FollowSymlinks 需要将AllowOverride 设置为Options 或更高权限。删除该行,然后告诉我们发生了什么。 当我删除该行时,我只得到一个 404 这样更好。比之前少了96!!检查 apache 错误日志并查看映射了哪个文件。 注释掉 SymLinks 行后,我在错误日志中得到“Options 指令禁止的目录索引:” 你那里没有index.php吗? 【参考方案1】:

在 /public 的同一级别使用

这种方式先重定向到公共

RewriteEngine on
RewriteCond %HTTP_HOST ^domain.com$ [NC,OR]
RewriteCond %HTTP_HOST ^www.domain.com$
RewriteCond %REQUEST_URI !public/
RewriteRule (.*) /public/$1 [L]

在 /public 里面

然后,你处理 index.php

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>


<IfModule mod_rewrite.c>
    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

【讨论】:

在 index.php 对我有用之前添加一个斜线。重写规则 ^(.*)$ /index.php/$1 [L] 您能否在您的解决方案中添加强制HTTPS?【参考方案2】:

我的设置与RamiroRS answer 完全相同,但仍然出现内部服务器错误。我的问题在于文件权限。文件夹应为 0755,文件应为 0644。

【讨论】:

以上是关于Laravel htaccess 问题的主要内容,如果未能解决你的问题,请参考以下文章

301 重定向.htaccess

重写规则问题:.htaccess

htaccess 文件不适用于特殊字符

如何使用 .htaccess 密码保护 WordPress 博客

.htaccess是什么

HTACCESS 短网址并修改我的网址