我正在尝试在家里的本地服务器上设置laravel,我似乎无法 得到控制器路线,例如:
Route::controller('home','home');
这段代码可以在我工作的服务器上运行,并且我已经阅读了一些关于这个的论坛 声称问题的问题是因为apache2未配置为查看 .htaccess文件。
我已经搞砸了一段时间,但我似乎仍无法得到任何工作。 我进入/ etc / apache2 / sites-available并创建了我自己的配置文件,名为site1 看起来像这样:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/laravel/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/laravel/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
然后我运行了a2dissite默认&amp;&amp; a2ensite site1和/etc/init.d/apache2 restart 但什么都没发生。
感谢您的帮助,如果我需要澄清任何内容,请告诉我。
原来apache甚至没有读取.htaccess文件。我特意写了一些废话 在它应该导致错误,但它没有。
答案 0 :(得分:5)
问题原来是mod_rewrite.c没有启用, 所以我运行a2enmod重写,一切都开始工作了。我注意到了 laravel中的.htaccess文件依赖于它。傻我。谢谢你们 帮助
答案 1 :(得分:3)
在.htaccess中尝试替换此行:
RewriteRule ^ index.php [L]
带
RewriteRule ^ /index.php [L]
编辑:
在这种情况下,我认为您的虚拟主机未在httpd.conf中设置。 您可以尝试一下,看看它是否有效:
将此行放在httpd.conf文件中
对于Windows
NameVirtualHost *:80
<VirtualHost *:80>
ServerName yourlaravel.com
DocumentRoot "C:/wamp/www/laravel/public"
<Directory "C:/wamp/www/laravel/public">
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/wamp/www"
<Directory "C:/wamp/www">
</Directory>
</VirtualHost>
对于Linux
NameVirtualHost *:80
<VirtualHost *:80>
ServerName yourlaravel.com
DocumentRoot "/var/www/laravel/public"
<Directory "/var/www/laravel/public">
</Directory>
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/var/www"
<Directory "/var/www">
</Directory>
</VirtualHost>
并在本地计算机上运行
对于打开的窗口,C:\ Windows \ System32 \ drivers \ etc \ hosts放置此行。
yourserverip yourlaravel.com
对于linux打开\ etc \ hosts放这行。
yourserverip yourlaravel.com
您可以参考此链接获取更多信息:
http://net.tutsplus.com/tutorials/php/building-web-applications-from-scratch-with-laravel/
我希望这可以提供一些帮助。
答案 2 :(得分:0)
当public/.htaccess
不正确时,通常会出现此类错误。试试这个:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 3 :(得分:-1)
如果您要上传到AWS EC2,请使用默认/var/www/html
作为根目录:
[ec2-user@www html]$ pwd
/var/www/html
[ec2-user@www html]$ ll
-rw-r--r-- 1 ec2-user ec2-user 146 Nov 10 06:29 CONTRIBUTING.md
drwxr-xr-x 12 ec2-user ec2-user 4096 Mar 8 16:21 app
-rwxr-xr-x 1 ec2-user ec2-user 2452 Nov 10 06:29 artisan
drwxr-xr-x 2 ec2-user ec2-user 4096 Mar 5 00:18 bootstrap
-rw-r--r-- 1 ec2-user ec2-user 717 Nov 10 06:29 composer.json
-rw-r--r-- 1 ec2-user ec2-user 58819 Jan 11 22:00 composer.lock
drwxr-xr-x 3 ec2-user ec2-user 4096 Jan 11 22:24 nbproject
-rw-r--r-- 1 ec2-user ec2-user 567 Nov 10 06:29 phpunit.xml
drwxr-xr-x 3 ec2-user ec2-user 4096 Nov 10 06:29 public
-rw-r--r-- 1 ec2-user ec2-user 2051 Nov 10 06:29 readme.md
-rw-r--r-- 1 ec2-user ec2-user 519 Nov 10 06:29 server.php
drwxr-xr-x 20 ec2-user ec2-user 4096 Jan 11 22:00 vendor
将ec2-user保留为所有laravel文件的所有者。执行:
$ sudo chmod -R 777 app/storage
$ sudo php artisan serve --host 0.0.0.0 --port 80
<强> https.conf:强>
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/var/www/html/"
<Directory "/var/www/html/">
Options Indexes FollowSymLinks Includes execCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<强> /var/www/html/.htaccess:强>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>