Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Yii routes. Несколько слешей в урле после домена / 7 сообщений из 7, страница 1 из 1
10.03.2013, 08:18
    #38178730
madbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
Как в yii можно настроить вот такие правила?

http://example.com/page.html - вызывается action в контроллере.
http://example.com////page.html - вызывается 404 ошибка

сейчас в конфиге стоит:
Код: php
1.
2.
3.
4.
5.
6.
7.
'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false,
    'rules'=>array(
          '/page.html' => 'module1/controller1/action1',
    ),
),


однако если после домена стоит несколько слэшей, вместо 404 вызывается action
...
Рейтинг: 0 / 0
10.03.2013, 11:40
    #38178774
ЫLL HEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
так работает

Код: php
1.
2.
3.
    'rules'=>array(
          '//.+'=>'путь к нужному обработчику',
    ),


зы: почему то не все регекспы принимает, на некоторые ругается, а некоторые просто не выполняет
...
Рейтинг: 0 / 0
10.03.2013, 17:24
    #38178995
madbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
ЫLL HEAD,

такой вариант работает не так как хочется - "//page.html" матчится правилом и отдает страницу вместо 404.

подебажил CUrlManager, при распозновании правил урл обрабатывается с помощью CttpRequest->getPathInfo(), в котором начальные и конечные слеши в урле тупо отбрасываются:
Код: sql
1.
$this->_pathInfo=trim($pathInfo,'/');


поскольку на сайте нет ни одного урла с "//", решил попопросту перекрыв CUrlManager:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class CustomUrlManager extends CUrlManager
{
    public function parseUrl($request)
    {
        $pathInfo = $request->getRequestUri();
        if (strpos($pathInfo, '//') !== false)
            throw new CHttpException(404, Yii::t('yii', 'Unable to resolve the request "{route}".',
                array('{route}' => $pathInfo)));
        return parent::parseUrl($request);
    }
}
...
Рейтинг: 0 / 0
10.03.2013, 18:06
    #38179016
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
я ваще ниче не понял, откуда берутся адреса вида http://example.com////page.html ?

Как вариант попробовать так, но все равно не ясно зачем
Код: php
1.
2.
3.
4.
5.
6.
7.
'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false,
    'rules'=>array(
          '/+page.html' => 'module1/controller1/action1',
    ),
),
...
Рейтинг: 0 / 0
10.03.2013, 19:01
    #38179059
madbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
Hettя ваще ниче не понял, откуда берутся адреса вида http://example.com////page.html
каприз заказчика, вводит вручную)

HettКак вариант попробовать так, но все равно не ясно зачем
Код: php
1.
2.
3.
4.
5.
6.
7.
'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false,
    'rules'=>array(
          '/+page.html' => 'module1/controller1/action1',
    ),
),


не поможет, еще перед проверкой слеши обрезаются в CHttpRequest->getPathInfo() (см. 14031973 )

В принципе, вопрос уже решен, всем спасибо)
...
Рейтинг: 0 / 0
10.03.2013, 19:49
    #38179096
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
В юии могут быть ссылки с двойными слешами, причем вполне рабочие, CGridView такими пользуется при поиске, так что если отвалиться, то первоначально не забудьте где искать)
...
Рейтинг: 0 / 0
11.03.2013, 06:21
    #38179298
madbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Yii routes. Несколько слешей в урле после домена
Hett,
спасибо, не знал.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Yii routes. Несколько слешей в урле после домена / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]