php - Laravel 5.2 漂亮的 URL

标签 php .htaccess laravel laravel-5 vhosts

如何更改 http://domain.com/public/index.phphttp://domain.com并且可以让除 ('/') 之外的其他路由工作?

解决方法 1:

虚拟主机文件:

<VirtualHost *:80>   
    DocumentRoot "/var/www/html/domain/public"
    ServerName domain.com
    <Directory "/var/www/html/domain/public">
        AllowOverride All
        Allow from All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

htaccess 文件:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

有了这个设置,是的,我可以设置 http://domain.com但是当我尝试调用另一条路线时,出现 404。这背后的原因如您所见,我已将我的根文件夹设置为公开。所以我的路线无法到达它们的目的地(比如那些被定向到我的 Controller 的路线,因为我的 Controller 不在公共(public)文件夹中)。

解决方法 2:
如果这次我将文档根目录和目录更改为 /var/www/html/domain/,我将丢失漂亮的 url,并且我只能通过输入 http://来请求主页domain.com/public/index.php.

请注意,我使用的是 ubuntu 14.04。

你有什么建议?

---更新---
路由示例:

Route::get('myroute', array(
   'uses' => 'MyController@myMethod',
   'as' => 'myroute'
));

---更新2--- php artisan route:list 结果是

+--------+----------+---------+------+---------+------------+
| Domain | Method   | URI     | Name | Action  | Middleware |
+--------+----------+---------+------+---------+------------+
|        | GET|HEAD | /       |      | Closure | web        |
|        | GET|HEAD | myroute |      | Closure | web        |
+--------+----------+---------+------+---------+------------+

最佳答案

您需要在 Web 服务器的配置文件中正确设置虚拟主机。设置public directory as root directory for Laravel VH and restart web server .

For Apache you can use these directives:

DocumentRoot "/path_to_aravel_project/public"
<Directory "/path_to_aravel_project/public">

For nginx, you should change this line:

root /path_to_aravel_project/public;

关于php - Laravel 5.2 漂亮的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37718237/

相关文章:

php - zf2主义2如何在实体列中使用tinyint数据类型

javascript - 使用无限 Ajax 滚动时的 jQuery 函数

html - 是否有可能拥有一个网站,例如基于文本的文档?

php artisan up 命令在 Laravel 中不起作用?

php - 无法运行我的登录表单的查询

php - 如何将表单的复选框名称存储到 php 数组

Apache URL 重写,

php - 安全下载文件

php - Laravel 5.5 枢轴连接以获取主 MySQL 结果的枢轴值

php - 在数据库中获取玩家下一个排名 - Laravel 5.2