我用Laravel创建了web应用程序,我在laravel服务器(php artisan serve
)上进行了测试,现在我想把它放在LAMP上,这样我就可以进一步测试了,但是出了点问题。
当我访问localhost/public/
时,我会看到我的主页,但是当我点击我的应用内的任何链接时,我会收到Not found
错误。另一方面,当我手动输入localhost/public/index.php/someURL
时,我会得到链接页面。
有人可以告诉我如何解决这个问题吗?
这是.htaccess
目录中的public
文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<IfModule mod_deflate.c>
<FilesMatch "\.(html|php|txt|xml|js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
这是apache2 conf文件(/etc/apache2/sites-available/000-default.conf
)的内容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
<Directory "/var/www/html">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我用这个命令启用了mod_rewrite:sudo a2enmod rewrite
我正在使用Ubuntu 14.04。
更新:
应用已置于/var/www/html/
答案 0 :(得分:4)
转到/etc/apache2/apache2.conf文件并确保它看起来像这样:
<Directory /var/www/html>
Options Indexes FollowSymLinks
Allowoverride All
Require All Granted
</Directory>
您可以在
之后找到它<Directory /usr/share>
....
</Directory>
执行mod_rewrite并重启apache,它应该可以工作!
答案 1 :(得分:1)
这就是我修复它的方法。我创建了另一个.htaccess文件并将其放在根目录/ www / html /:
中<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
从这里获取的信息:http://driesvints.com/blog/laravel-4-on-a-shared-host