我是一个Ubuntu 14.04内核。我在这台服务器上安装了我的Laravel应用程序。 安装后,我尝试将根目录设置为public。
sudo nano /etc/apache2/sites-available/000-default.conf
我在文件中只有这些选项
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port t$
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
我已将文档根目录更改为
DocumentRoot /var/www/html/public/
现在,当我尝试访问我的Laravel应用程序时,通过123.xxx.xxx.xxx/
显示主页并且运行良好。它也获得了所有的GET变量。例如:123.xxx.xxx.xxx?type=wefwef
但是当我转到123.xxx.xxx.xxx/login
之类的其他链接时,它会给我一个错误
Not Found
The requested URL /login/ was not found on this server.
Apache/2.4.7 (Ubuntu) Server at 104.236.234.85 Port 80
我的routes.php在localhost上运行良好。但不是在这台服务器上。请帮我。
答案 0 :(得分:96)
看起来您必须通过将此添加到您的vhost来启用.htaccess
:
<Directory /var/www/html/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
如果这不起作用,请确保您已启用mod_rewrite。
在进行更改后不要忘记重启apache! (service apache2 restart
)
答案 1 :(得分:34)
通过执行以下操作我解决了: 检查apache中是否有名为rewrite.load的模块:
cd /etc/apache2/mods-enabled/
如果不存在,请执行以下摘录:
sudo a2enmod rewrite
否则,请更改Apache配置文件以合并使用“友好URL”。
sudo nano /etc/apache2/apache2.conf
在编辑器中找到以下代码:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
更改为:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
之后通过以下方式重启Apache服务器:
sudo /etc/init.d/apache2 restart
答案 2 :(得分:20)
答案 3 :(得分:2)
对于在无聊的盒子里的Ubunutu 18.04 ...这对我有帮助
确保www-data有权访问.htaccess文件
sudo chown www-data.www-data .htaccess
编辑apache2 conf以允许符号链接等
sudo nano /etc/apache2/apache2.conf
将此添加到文件中
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
重新启动apache2服务器
sudo service apache2 restart
我希望这对某人有帮助。
答案 4 :(得分:1)
或者,您可以替换.htaccess文件中的所有内容
Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
在此处查看文档。 https://laravel.com/docs/5.8/installation#web-server-configuration
答案 5 :(得分:1)
我在 cPanel
中遇到了同样的问题,我解决了在这些行下方添加 .htaccess
文件的问题
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
答案 6 :(得分:0)
在httpd.conf文件中,您需要删除#
#LoadModule rewrite_module modules/mod_rewrite.so
删除#行后,将如下所示:
LoadModule rewrite_module modules/mod_rewrite.so
Apache重启
答案 7 :(得分:0)
# RewriteRule ^ index.php [L]
答案 8 :(得分:0)
如果仍然遇到问题,除了所有答案外,还可以编辑APP_URL
文件并将 APP_URL=similar_to_my_avatar_link
设置为您的域名,如下所示:
React Fragment
答案 9 :(得分:-1)
确保您已启用 mod_rewrite 。
restart apache
并清除浏览器的 Cookie ,以便在 .htaccess 再次阅读