Система шлюзов - PullRequest
       6

Система шлюзов

0 голосов
/ 04 мая 2010

Я пытаюсь изменить способ, которым мы в настоящее время предоставляем систему страниц шлюза в нашей CMS. Под страницей шлюза я имею в виду сопоставление несуществующего URL-адреса со страницей с помощью правила перезаписи в .htaccess, например

RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1

Это позволяет людям создавать короткие ссылки на страницы CMS для рекламы в журналах и т. Д. Проблема этого метода заключается в том, что он использует доступ к .htaccess. Я бы предпочел метод, который находится на уровне кода, но мне кажется, что - без правила перезаписи - будет вызвана ошибка 404. Есть ли способ предотвратить это или обойти это?

1 Ответ

4 голосов
/ 04 мая 2010

Вы можете использовать карту перезаписи в htaccess. Он ссылается на внешний файл / скрипт, передает ему входящий URI и возвращает переписанный URI.

В вашем .htaccess

RewriteMap shorts prg:/path/to/map.php

В вашем php файле map.php

#!/path/to/php
$keyboard = fopen("php://stdin","r"); // get data from stdin
while (1) {
    $line = trim(fgets($keyboard));
    // fetch rewrite for line and echo out
}

PHP-файлу передается короткий URL-адрес и возвращается - в зависимости от вашей логики - полный URL-адрес

...