我试图用虚拟主机创建一个动态的开发环境。 现在我有:
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "C:\xampp\htdocs\%1\public"
# available aliases to use
ServerAlias *.dev
</VirtualHost>
它适用于Laravel的默认路线:
Route::get('/', function () {
return view('home.index');
});
但是任何其他路由都会给我一个500错误的内部重定向。 除了routes.php和一些默认更改之外,我使用Laravel 5.2而不做任何更改。
当我将像这样的域分配为VirtualHost时,它可以正常工作:
<VirtualHost *:80>
ServerName example.dev
VirtualDocumentRoot none
DocumentRoot "C:\xampp\htdocs\example\public"
</VirtualHost>
如何解决此问题,以便我可以使用动态域名,因此我不必手动添加所有域。
提前谢谢你, 斯特凡·弗兰森
修改
当我使用它时:
http://example.dev/index.php/test
页面正确加载,但这不是我想要的。 那么如何从url中删除index.php?我已经检查过,并且al模块已正确加载,这是我的.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 ^(.*)/$ /$1 [L,R=301]
# # Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# # Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
修改
发现当我将RewriteRule ^ index.php [L]
更改为RewriteRule ^(.*)$ /index.php/$1 [L]
但我仍然不明白为什么它可以在手动添加的虚拟主机上运行,但不能在动态生成的虚拟主机上运行,是否有人对此有解释?
答案 0 :(得分:0)
我猜你重写模块(mod_rewrite)被禁用了。在apache.conf中查看它
也许部分Pretty URL可以帮到你。 https://laravel.com/docs/5.1
答案 1 :(得分:0)
我遇到了同样的问题。我找到了解决方案。
如果不在根目录中,请转到根目录中的.htaccess文件,然后将其从该目录中剪切的公用文件夹中可用,并粘贴到根目录中
更改以下代码。
RewriteRule ^ index.php [L]
到
RewriteRule ^(。*)$ /index.php/$1 [L]