子域名路由在Laravel 5 - WAMPServer上不起作用。

10 浏览
0 Comments

子域名路由在Laravel 5 - WAMPServer上不起作用。

我正在尝试在我的应用程序中实现静态和动态子域名路由。但是它的工作结果不如预期。我在我的本地机器上使用WAMPServer。

routes.php

Route::get('/', 'WelcomeController@index');
Route::group(['domain' => 'api.letsplay.dev'], function () {
    Route::group(['prefix' => 'v1'], function () {
        Route::get('users', function () {
            return "成功";
        });
    });
});

php artisan route:list 输出如下:

+------------------+----------+----------+------+----------------------------------------------+------------+
| Domain           | Method   | URI      | Name | Action                                       | Middleware |
+------------------+----------+----------+------+----------------------------------------------+------------+
|                  | GET|HEAD | /        |      | App\Http\Controllers\WelcomeController@index | guest      |
| api.letsplay.dev | GET|HEAD | v1/users |      | Closure                                      |            |
+------------------+----------+----------+------+----------------------------------------------+------------+

hosts 文件内容如下:

127.0.0.1       localhost
127.0.0.1       hosp.dev
127.0.0.1       letsplay.dev

我使用Laravel框架提供的.htaccess文件,没有做任何修改。

Options -MultiViews

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]

httpd-vhosts.conf 文件内容如下:

ServerAdmin webmaster@letsplay.dev

DocumentRoot "c:/wamp/www/letsplay-web/public"

ServerName letsplay.dev

ErrorLog "logs/letsplay.dev-error.log"

CustomLog "logs/letsplay.dev-access.log" common

当我尝试在浏览器中访问letsplay.dev时,结果符合预期。但是当我尝试访问api.letsplay.dev/v1/users时,在Chrome中会出现ERR_ICANN_NAME_COLLISION错误,并且在IE中会出现以下错误!

IE中的Forbidden错误

请帮助我理解我漏掉了什么!

0
0 Comments

问题原因:没有启用Apache模块alias_module和vhost_alias_module,没有在httpd-vhosts.conf文件中添加正确的配置。

解决方法:启用Apache模块alias_module和vhost_alias_module,添加正确的配置到httpd-vhosts.conf文件中,并在hosts文件中添加相应的配置。

0
0 Comments

问题原因:.dev是一个新提出的通用顶级域名(gTLD),但是由于一些问题,我们不再使用.dev域名,而是转而使用.local域名。此外,在Windows主机文件中不能使用通配符,所以必须指定每个子域名。

解决方法:在主机文件中不要重复多次相同的IP地址,而是将它们添加到同一行,并用空格分隔。为了在Apache中启用通配符子域名支持,只需在虚拟主机配置中指定ServerAlias *.letsplay.dev

0