0

我正在创建一个 drupal 站点,该站点应包含一个功能,该功能将把一个干净的 url 变成带有查询字符串的 aa url。

它应该工作的方式是:

  1. 用户可以在 url 栏中输入任何干净的 url,例如 www.example.com/hobbies/skiing。
  2. 这是我的问题:

在 .htaccess 里面我放了这行代码:

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

在drupal中,我创建了一个启用PHP过滤器的页面,然后输入

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

RewriteRule 应该www.example.com/hobbies/skiing变成,www.example.com/index.php?hobbies=skiing但我猜代码没有按预期工作,或者 drupal 运行的代码要么跳过 .htaccess 命令或其他东西。

3.一旦url被翻译成脏url,页面将显示hobbies的值是什么,因为代码在你直接在url栏中输入www.example.com/index.php?hobbies=skiing时有效.

你能帮我做这个吗?

4

1 回答 1

0

有一种更简单的方法可以做到这一点,Drupal 已经保留了路径部分供以后使用,您可以使用该arg()功能进行访问:

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

如果您的路径是别名,但arg()将返回原始路由器路径(node/1 等),因此您必须更具创造性:

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

更新

根据您的评论,您最好为此制作一个快速的自定义模块:

// 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/页面内容区域中的内容

于 2011-10-25T14:14:15.720 回答