如何在宅基地机器上和本地服务时显示 Laravel 相同的路由
How to display Laravel route the same on a homestead machine and when served locally
我正在尝试使用以下 Homestead.yaml
:
从 Homestead 机器为我的 Laravel 应用程序提供服务
name: homestead-fontys
ip: "192.168.10.12"
memory: 2048
cpus: 2
provider: virtualbox
authorize: c:/Users/karin/.ssh/id_rsa.pub
keys:
- c:/Users/karin/.ssh/id_rsa
folders:
- map: c:/Users/karin/Documents/uni/work/develop/laravel-forum/forum/
to: /home/vagrant/code
sites:
- map: exampleurl.test
to: /home/vagrant/code/public
type: apache
php: "7.2"
databases:
- forum
features:
- mariadb: false
- ohmyzsh: false
- webdriver: false
我有以下路线:
Route::get('/', function () {
return view('welcome');
});
Route::get('/hello-world', function () {
return view('helloworld');
});
当我从 git bash 提供网站服务时,我可以转到 http://localhost:8000/ to view the first URL. However, if I go to http://exampleurl.test 我得到一个 No input file specified.
要访问欢迎页面,我必须附加 /index.php
到 URL。当 Homestead 运行 时,我还没有弄清楚 /hello-world 的 URL 是什么。
我怎样才能确保在 URL http://exampleurl.test
上提供欢迎页面并且在 http://exampleurl.test/hello-world
上提供 hello-world
看来 apache 中的重写规则配置不正确,因此您需要仔细检查一下。
是的,您需要通过 index.php
(也称为前端控制器)访问所有内容,因此要访问 hello-world,您需要访问 http://exampleurl.test/index.php/hello-world
我通过以下方式修复了它:
1.edited 我的 /public
目录中的 .htaccess
文件包含以下内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
将项目根目录中的 server.php
重命名为 index.php
运行 vagrant reload --provision
我正在尝试使用以下 Homestead.yaml
:
name: homestead-fontys
ip: "192.168.10.12"
memory: 2048
cpus: 2
provider: virtualbox
authorize: c:/Users/karin/.ssh/id_rsa.pub
keys:
- c:/Users/karin/.ssh/id_rsa
folders:
- map: c:/Users/karin/Documents/uni/work/develop/laravel-forum/forum/
to: /home/vagrant/code
sites:
- map: exampleurl.test
to: /home/vagrant/code/public
type: apache
php: "7.2"
databases:
- forum
features:
- mariadb: false
- ohmyzsh: false
- webdriver: false
我有以下路线:
Route::get('/', function () {
return view('welcome');
});
Route::get('/hello-world', function () {
return view('helloworld');
});
当我从 git bash 提供网站服务时,我可以转到 http://localhost:8000/ to view the first URL. However, if I go to http://exampleurl.test 我得到一个 No input file specified.
要访问欢迎页面,我必须附加 /index.php
到 URL。当 Homestead 运行 时,我还没有弄清楚 /hello-world 的 URL 是什么。
我怎样才能确保在 URL http://exampleurl.test
上提供欢迎页面并且在 http://exampleurl.test/hello-world
看来 apache 中的重写规则配置不正确,因此您需要仔细检查一下。
是的,您需要通过 index.php
(也称为前端控制器)访问所有内容,因此要访问 hello-world,您需要访问 http://exampleurl.test/index.php/hello-world
我通过以下方式修复了它:
1.edited 我的 /public
目录中的 .htaccess
文件包含以下内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
将项目根目录中的
server.php
重命名为index.php
运行
vagrant reload --provision