powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Yii routes. Несколько слешей в урле после домена
7 сообщений из 7, страница 1 из 1
[PHP] Yii routes. Несколько слешей в урле после домена
    #38178730
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в 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
[PHP] Yii routes. Несколько слешей в урле после домена
    #38178774
ЫLL HEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так работает

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


зы: почему то не все регекспы принимает, на некоторые ругается, а некоторые просто не выполняет
...
Рейтинг: 0 / 0
[PHP] Yii routes. Несколько слешей в урле после домена
    #38178995
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы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
[PHP] Yii routes. Несколько слешей в урле после домена
    #38179016
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ваще ниче не понял, откуда берутся адреса вида 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
[PHP] Yii routes. Несколько слешей в урле после домена
    #38179059
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
[PHP] Yii routes. Несколько слешей в урле после домена
    #38179096
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В юии могут быть ссылки с двойными слешами, причем вполне рабочие, CGridView такими пользуется при поиске, так что если отвалиться, то первоначально не забудьте где искать)
...
Рейтинг: 0 / 0
[PHP] Yii routes. Несколько слешей в урле после домена
    #38179298
madbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
спасибо, не знал.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Yii routes. Несколько слешей в урле после домена
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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