Могу ли я ввести чистый URL-адрес в drupal и вместо этого преобразовать в URL-адрес со строкой запроса? - PullRequest
0 голосов
/ 25 октября 2011

Я создаю сайт drupal, который должен включать функцию, которая превратит чистый URL в URL со строкой запроса.

Как это должно работать:

  1. пользователь может ввести любой чистый URL-адрес, например www.example.com/hobbies/skiing, в строке URL.
  2. вот моя проблема:

внутри .htaccess, который я имеюпоместите эту строку кода:

RewriteRule ^hobbies/([a-zA-Z0-9-]*) /index.php?hobbies=$1 [NC]

в drupal, я создал страницу с включенным PHP Filter, затем набрал

<?PHP echo $_GET['hobbies']; ?>

RewriteRule должен повернуть www.example.com/hobbies/skiing в www.example.com/index.php?hobbies=skiing но я думаю, что код работает не так, как ожидалось, или в drupal запущены коды, которые либо пропускают команду .htaccess, либо что-то в этом роде.

3.после перевода URL-адреса в грязный URL-адрес на странице отобразится значение хобби , так как код работает, когда вы действительно вводите www.example.com/index.php?hobbies=skiing напрямую.в адресную строку.

Вы можете помочь мне с этим?

1 Ответ

0 голосов
/ 25 октября 2011

Существует гораздо более простой способ сделать это, Drupal уже оставляет части пути для дальнейшего использования, доступ к которым можно получить с помощью функции arg():

if (arg(0) == 'hobbies' && arg(1)) {
  $hobby = arg(1);
}

Если ваш путь является псевдонимом, хотя arg() вернет исходный путь маршрутизатора (узел / 1 и т. Д.), Так что вам придется быть немного более изобретательным:

$parts = explode('/', $_SERVER['REQUEST_URI']);
if ($parts[1] == 'hobbies' && isset($parts[2])) {
  $hobby = $parts[2];
}

UPDATE

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

// Implements hook_menu().
function mymodule_menu() {
  $items['hobbies/%'] = array(
    'title' => 'A title',
    'access arguments' => array('access content'),
    'page callback' => 'mymodule_page',
    'page arguments' => array(1)
  );

  return $items;
}

function mymodule_page($hobby) {
  return $hobby;
}

Это буквально распечатает то, что когда-либо после hobbies/ в области содержимого страницы

...