Routing 如何将`Zend\Mvc\Router\Http\Hostname`与ip和端口号一起使用?

Routing 如何将`Zend\Mvc\Router\Http\Hostname`与ip和端口号一起使用?,routing,zend-framework2,Routing,Zend Framework2,对于开发,我将使用主机文件覆盖指向http://project.dev/到我的本地ip 在我的module.config.php文件中,我有(加上子路由等): 我现在正在实现一个具有回调的支付网关。如何更改此路由以接受我的公共ip地址和端口号 我尝试过简单的交换: 'router' => [ 'routes' => [ 'home' => [ 'options' => [ 'route' =&

对于开发,我将使用主机文件覆盖指向
http://project.dev/
到我的本地ip

在我的
module.config.php
文件中,我有(加上子路由等):

我现在正在实现一个具有回调的支付网关。如何更改此路由以接受我的公共ip地址和端口号

我尝试过简单的交换:

'router' => [
    'routes' => [
        'home' => [
            'options' => [
                'route' => '12.34.56.78:1234',
            ],
        ],
    ],
],
但这不起作用(找不到路线)。我已将端口号替换为变量:

            'options' => [
                'route' => '12.34.56.78:port',
                'constraints' => [
                    'port' => ':1234',
                ],
            ],
但这也不起作用

如何将
Zend\Mvc\Router\Http\Hostname
与ip和端口号一起使用

是否可以在一个路由中同时指定这两个路由

我有另一条专门处理子域的
Zend\Mvc\Router\Http\Hostname
路由:

        'subdomains' => [
            'options' => [
                'route' => ':sub.project.dev',
            ],
        ],

如果将ip地址放入路由中,
:sub
将在最后(例如
12.34.56.78(:port)?/:sub
)。在这种情况下,是否可以在一个路由中指定域名和ip?e、 g.
':sub.project.dev | 12.34.56.78(:port)/:sub'

Zend\Mvc\Router\Http\Hostname
不需要端口号。因此,可以将路由设置为
'route'=>'12.34.56.78',

无法添加子域。作为子域或子文件夹。IP请求基本上不能包含子域组件。如果您尝试,您会收到一条可爱的错误消息(无法访问站点,无法找到服务器DNS地址)。此路由器仅匹配请求的主机名部分,即第一个
/
之前的所有内容。这意味着它无法匹配请求的文件夹部分

那么-我如何解决这个问题

对于主路由,我只是更改了ip地址并删除了端口号:

//easy enough
'router' => [
    'routes' => [
        'home' => [
            'options' => [
                'route' => '12.34.56.78',
            ],
        ],
    ],
],
由于我将使用指定的参数来开发和测试它,我决定输入这些参数作为变量的默认值:

'router' => [
    'routes' => [
        'subdomains' => [
            'options' => [
                'route' => '12.34.56.78',
                'defaults' => [
                    'sub' => 'abcd', //default subdomain to use.
                ],
            ],
        ],
    ],
],
Gotchas

使用
url
查看帮助程序时,指定
['force_canonical'=>true]
将不会回显端口号,这意味着以这种方式加载的任何资源请求都将无法解析(
12.34.56.78
!=
12.34.56.78:1234
)。如果所有请求都是相对的,那么就没有问题。否则,问题就来了

这不是最好的解决方案,因为一旦我完成了这个功能,我将不得不撤销这些更改,但希望足够好,以允许支付网关进行回调,而不会出现问题,直到我可以将此代码放到登台服务器上(这将成为一个问题)

'router' => [
    'routes' => [
        'subdomains' => [
            'options' => [
                'route' => '12.34.56.78',
                'defaults' => [
                    'sub' => 'abcd', //default subdomain to use.
                ],
            ],
        ],
    ],
],