【发布时间】:2020-08-12 19:52:32
【问题描述】:
在我拥有的本地 PC 上使用 Apache2 在 Ubuntu 18.04LTS 上创建了我的第一个 Laravel 应用程序(使用 Lavarel 7.x)。
按照Lavarel Docs的设置说明,一切顺利。
一个问题是网址:
http://localhost/lavarel-project1/ - returns the directory listing
apache2 虚拟主机文件如下所示:
<VirtualHost *:80>
DocumentRoot /var/www/html/lavarel-project1/public
<Directory /var/www/html/lavarel-project1/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
从网上的研究 - 文章说从 Lavarel App 根目录复制 server.php 文件并将其重命名为 index.php。 这可行,但随后在应用程序中创建了路由,发现了 url 的其他问题:
http://localhost/lavarel-project1/ - works
http://localhost/lavarel-project1/catlog/ - doesn't work
http://localhost/lavarel-project1/public/index.php/catlog - works
以下是公用文件夹中.htaccess文件的内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
在网络上研究了这个问题 - 如何从 url 中删除 public/index.php,但收效甚微 - 所有推荐的方法都不起作用,因此在此处提出问题。
提前致谢。
【问题讨论】:
-
您是否尝试过启用 mod_rewrite ?
sudo a2enmod rewrite然后重启apache:sudo systemctl restart apache2;我的第二个问题是,您的公用文件夹中有 .htaccess 文件吗? -
@forloops,感谢您的帮助。我已经在 apache2 上启用了 mod_write 并重新启动它。还是有问题。是的,我在 lavarel 应用程序的公用文件夹中确实有一个(.htaccess 文件)。我会将内容添加到问题中。
标签: php laravel apache ubuntu-18.04