【发布时间】:2014-11-28 09:26:29
【问题描述】:
我的虚拟主机有以下配置
<VirtualHost 127.0.0.1:80>
ServerAdmin admins@example.com
DocumentRoot /home/mydir
ServerName mydir.domain.com
ErrorLog /home/mydir/logs/apache-local-error_log
CustomLog /home/mydir/logs/apache-local-access_log common
RewriteEngine on
RewriteLog /home/mydir/logs/rewrite.log
RewriteLogLevel 3
Alias /proj /home/mydir/proj/public_html
<Directory /home/mydir>
Options +Indexes
AllowOverride ALL
</Directory>
</VirtualHost>
我在 /home/mydir/proj 中安装了 laravel,当我尝试访问 http://mydir.domain.com/proj 时,我得到“内部服务器错误”,并且在日志中我得到以下信息:
重写日志:
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (2) init rewrite engine with requested uri /proj/public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (1) pass through /proj/public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] add path info postfix: /home/mydri/proj/public_html/public_html -> /home/mydri/proj/public_html/public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] strip per-dir prefix: /home/mydri/proj/public_html/public_html/index.php -> public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] applying pattern '^(.*)/$' to uri 'public_html/index.php'
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] add path info postfix: /home/mydri/proj/public_html/public_html -> /home/mydri/proj/public_html/public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] strip per-dir prefix: /home/mydri/proj/public_html/public_html/index.php -> public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] applying pattern '^.*$' to uri 'public_html/index.php'
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (2) [perdir /home/mydri/proj/public_html/] rewrite 'public_html/index.php' -> 'index.php'
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (3) [perdir /home/mydri/proj/public_html/] add per-dir prefix: index.php -> /home/mydri/proj/public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (2) [perdir /home/mydri/proj/public_html/] strip document_root prefix: /home/mydri/proj/public_html/index.php -> /proj/public_html/index.php
IP Address - - [28/Nov/2014:13:16:58 +0400] [mydri.domain.com/sid#7f4fc4e07098][rid#7f4fc574f508/initial/redir#10] (1) [perdir /home/mydri/proj/public_html/] internal redirect with /proj/public_html/index.php [INTERNAL REDIRECT]
apache-local-error_log:
[Fri Nov 28 13:16:58 2014] [error] [client IP Address] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
在 /home/mydir/proj/public_html 我有 laravel 的标准 .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php [L]
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
任何我做错的建议将不胜感激。
【问题讨论】:
-
index.php 在它搜索的位置不存在?
-
/home/mydir/proj/public_html @Sumurai8中有index.php
-
我认为你的别名是罪魁祸首。我没有足够的经验来确定这些。尝试将其注释掉,重新启动 Apache(必需的步骤!)并重试。
-
@Sumurai8 是的别名是问题,我需要修复它而不是删除。我已经删除了,如果我转到mydir.domain.com/proj/public_html 它可以工作,但我不想在 url 中写入 public_html 并且我不希望通过 http 访问 public_html 以上的文件
-
那为什么不改变document_root呢?如果您不想访问该级别以下的文件,则应将文档根目录移至 /proj/public_html 目录。
标签: apache .htaccess mod-alias