Я следовал следующему уроку: Yii 1.1: управление URL для веб-сайтов с защищенными и незащищенными страницами
Это код из /protected/config/main.php
'urlManager'=>array(
'class' => 'UrlManager',
'hostInfo' => 'http://goliv.me',
'secureHostInfo' => 'https://goliv.me',
'secureRoutes' => array(
'site/booking', // site/login action
),
'urlFormat' => 'path',
'showScriptName' => false,
'caseSensitive' => false,
'urlSuffix' => '.html',
'rules' => array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>'
),
),
а это мое .htaccess
файл:
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
Я сталкиваюсь со следующей проблемой только с site/booking
:
Эта веб-страница имеет цикл перенаправления
Когда я удаляю эту часть:
'secureRoutes' => array(
'site/booking'
),
Все работает без проблем.
Какие-либо решения?
Метод не корректно возвращает true, если в конце маршрута есть косая черта, поэтому вызов сайта / booking / не вернет true.
class UrlManager extends CUrlManager
{
................
/**
* @param string the URL route to be checked
* @return boolean if the give route should be serviced in SSL mode
*/
protected function isSecureRoute($route)
{
if ($this->_secureMap === null) {
foreach ($this->secureRoutes as $r) {
$this->_secureMap[strtolower($r)] = true;
}
}
$route = strtolower($route);
if (isset($this->_secureMap[$route])) {
return true;
} else {
return ($pos = strpos($route, '/')) !== false
&& isset($this->_secureMap[substr($route, 0, $pos)]);
}
}
Других решений пока нет …