Редирект при заходе на страницу по GET id.

Всем привет, пытался найти решение этой задачи в интернете, но там тонна других редиректов, а вот такого нет.

Допустим мы заходим на страницу по modx.com/?id=123 и получаем modx.com/company/media-center/news-releases/modx-evolution-1.0.3/ как сделать аналогичное?


В htc указано:
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Павел Левин
17 сентября 2015, 22:10
modx.pro
2 685
0

Комментарии: 13

Constantine
18 сентября 2015, 08:33
0
в системных настройках modx включены дружественные урл?
htc правильно называется — ".htaccess", лежит в корне?
на локальных серверах может не работать.
    Павел Левин
    18 сентября 2015, 10:06
    0
    Да и это не локальная проблема.
      Constantine
      18 сентября 2015, 10:48
      0
      в .htaccess есть такие строчки?

      RewriteEngine On
      RewriteBase /
        Павел Левин
        18 сентября 2015, 10:52
        0
        Да.
          Constantine
          18 сентября 2015, 10:56
          0
          а если прописать запрет на открытие целиком — запрет отрабатывается?
          может быть просто сам htaccess игнорируется в этой папке?
            Павел Левин
            22 сентября 2015, 11:43
            0
            Я м.б. не понимаю, а как бы ЧПУ работало без htaccess?
            Единственное я его не обновлял долгое время, возможно проблема в этом.
            Гляну разницу.
              Николаевич
              22 сентября 2015, 15:45
              0
              если найдете решение, сообщите пожалуйста
                Павел Левин
                22 сентября 2015, 20:00
                0
                Оно ниже плагин на событие OnWebPageInit от Василия.
    Василий Наумкин
    22 сентября 2015, 16:37
    +1
    Допустим мы заходим на страницу по modx.com/?id=123 и получаем modx.com/company/media-center/news-releases/modx-evolution-1.0.3/ как сделать аналогичное?

    Это решается элементарным плагином:
    <?php
    if ($modx->event->name == 'OnWebPageInit' && !empty($_GET['id'])) {
    	$id = (int)$_GET['id'];
    	if ($modx->getCount('modResource', array('id' => $id, 'published' => 1, 'deleted' => 0))) {
    		$modx->sendRedirect($modx->makeUrl($id));
    	}
    }
    Писал без проверки, могут быть опечатки, но принцип должен быть понятен.
      Павел Левин
      22 сентября 2015, 19:15
      0
      Спасибо Василий, видать дело не в htaccess.
      Глянул modx.pro/?id=6538 и он не перешел на modx.pro/help/6538/
        Василий Наумкин
        23 сентября 2015, 03:07
        0
        Я вот даже не могу представить, а зачем мне включать такой плагин?
          Павел Левин
          23 сентября 2015, 18:16
          0
          Ссылка по id никогда не переедет и не поменяет свое название, именно для этих целей использую такой формат ссылок в контенте т.к. он статичен и не будешь все время менять ссылку, если вдруг что изменилось.
        Павел Левин
        22 сентября 2015, 19:28
        0
        Код работает :)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        13