我正试图在家里的本地服务器上设置laravel,但我似乎无法使控制器路线正常工作例如:
Route::controller('home','home');
这段代码在我工作的服务器上运行,我读过一些关于声称该问题的问题是因为apache2没有配置为查看.htaccess文件。
我已经为此烦恼了一段时间,但我似乎仍然什么都做不到。我进入/etc/apache2/可用的站点,创建了我自己的配置文件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>
然后我运行了一个dissitedefault&;a2ensite site1和/etc/init.d/apache2重新启动但什么也没发生。
谢谢你的帮助,如果我需要澄清什么,请告诉我。
事实证明,apache甚至没有读取.htaccess文件。我故意写了一些废话本应导致错误,但事实并非如此。
问题是mod_rewrite.c没有启用,所以我进行了一次为期两个月的重写,一切都开始工作了。我注意到laravel中的.htaccess文件依赖于它。愚蠢的我。感谢所有帮助
在.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/
我希望这能有所帮助。
当public/.htaccess
不正确时,经常会出现这种错误。试试这个:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
如果要上传到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用户作为所有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>