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.
],
],
],
],
],