我有一个用Laravel编写的webapp,需要在Web主机上的文件夹中运行。
该应用必须通过hostname.com/webhit/
访问。这将指向应用程序的主页。
我只有一条路线:
Route::controller('/', 'HomeController');
HomeController的getIndex需要提供主页。 这有效。
然而,只要我想要hostname.com/webhit/login
之类的东西,我就会从Apache获得404.
显然,.htaccess
无法正常工作。实际上,我需要将hostname.com/webhit/login
看似hostname.com/webhit/index.php/login
的网址转换为.htaccess
。
我在www/webhit
(index.php
所在的位置)有一个<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ webhit/index.php/$1 [L]
</IfModule>
文件,如下所示:
.htaccess
我对.htaccess
文件语法不太熟悉,但我认为它做错了。
我做到了。我的mod_rewrite
错了(它实际上导致了重定向循环),但问题是它甚至没有被Apache解析(因此在请求中由于&gt; 10重定向导致404而不是500)。为了让一切顺利,我做了以下步骤:
\etc\apache2\sites-available\default
并重新启动Apache(关于如何执行此操作的大量文档).htaccess
并将AllowOverride设置为all来实际启用重写(请参阅上面的链接以获取更多详细信息)。在此之后,我开始工作了。我希望它可以帮助未来的程序员遇到类似的问题!
答案 0 :(得分:1)
检查默认服务器要求 - laravel .htaccess文件适用于大多数情况。试试这个:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我建议您使用资源丰富的控制器 - 从您的路由到控制器方法的映射更清晰,您将获得满 具有一个命令的资源(路径,模型,视图,控制器)