Реглярка для urlmanager

Тема в разделе "Регулярные выражения", создана пользователем SkiLLer, 24 апр 2013.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. SkiLLer

    SkiLLer

    Регистр.:
    22 авг 2007
    Сообщения:
    307
    Симпатии:
    64
    Здравствуйте. Помогите составить регулярку вот для такого момента: в yii используется urlmanager, и нужно чтобы все запросы проходили через один контроллер, кроме запросов которые содержат site,admin,gii.
    На сейчас получилось вот такое
    PHP:
    array('site/showPage','pattern' => "<page:(?!admin|gii|site)[a-zA-Z0-9_]+>","urlSuffix" => '/','caseSensitive' => false)
    вроде и работает, но вот sitemap, например, не отрабатывает.
    Надеюсь доступно описал.
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.401
    Симпатии:
    1.182
    Мало подробностей.
    sitemap по какому адресу sitemap.xml?
    это статичный файл или он формируется контроллером по запросу и если контролером, то каким?
    а если статичный, то интересно htaccess или nginx переадресовывает все запросы на index.php или только для несуществующих файлов?
    прописан ли 'defaultController'=>'in', в конфиге?
     
  3. SkiLLer

    SkiLLer

    Регистр.:
    22 авг 2007
    Сообщения:
    307
    Симпатии:
    64
    все переадресовывается на index.php, адрес -http://site.com/sitemap - это страница которая генерируется контроллером. Все генерируется контроллером SiteController, все страницы, но нужно все, которые не admin,site/*,gii отправлять на определенный экшн. Вот тут то и нужна правильная регулярка для urlmanager.
     
  4. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    453
    В таких случаях полезно давать больше примеров, но если я правильно понял, то так должно работать:
    Код:
    array('site/showPage','pattern' => "<page:(?!admin|gii|site/)[a-zA-Z0-9_]+>","urlSuffix" => '/','caseSensitive' => false)
     
    SkiLLer нравится это.
  5. SkiLLer

    SkiLLer

    Регистр.:
    22 авг 2007
    Сообщения:
    307
    Симпатии:
    64
    Да, спасибо, подошло вроде, только экранировать надо было, вот такое сработало
    PHP:
    array('site/showPage','pattern' => "<page:(?!admin|gii|site\/)[a-zA-Z0-9_]+>","urlSuffix" => '/','caseSensitive' => false)
     
Статус темы:
Закрыта.