10

我正在尝试设置一个网站。该站点在我们一直用来向客户展示站点的实时开发服务器上运行良好。这是来自现场开发的 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)

4

2 回答 2

7

在 /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>
于 2013-04-20T04:48:41.020 回答
0

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

于 2014-07-28T00:29:43.153 回答