2017-07-10 67 views
0

對於開發,我使用主機文件覆蓋來指向我的本地IP地址http://project.dev/如何在ip和端口號中使用`Zend Mvc Router Http Hostname`?

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

'router' => [ 
    'routes' => [ 
     'home' => [ 
      'options' => [ 
       'route' => 'project.dev', 
      ], 
     ], 
    ], 
], 

我現在實行有回調的支付網關。我如何改變這條路線來接受我的公共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?例如':sub.project.dev|12.34.56.78(:port)?/:sub'

回答

0

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

陷阱

當使用url視圖幫助程序,指定['force_canonical' => true]將不會回顯端口號,這意味着以該方式加載資源的任何請求都不會解析(12.34.56.78!= 12.34.56.78:1234)。如果所有的請求都是相對的,那麼沒有問題。否則,問題。

不是最好的解決方案,因爲一旦完成此功能,我將不得不撤消這些更改,但是希望足夠好以允許支付網關在沒有問題的情況下進行回調,直到我可以將此代碼放到臨時服務器上(這成爲moo point)。

相關問題