如何更改 http://domain.com/public/index.php至 http://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/