Path 我可以在drupal中键入一个干净的url,并将其转换为带有查询字符串的url吗?

Path 我可以在drupal中键入一个干净的url,并将其转换为带有查询字符串的url吗?,path,url-rewriting,drupal-7,clean-urls,Path,Url Rewriting,Drupal 7,Clean Urls,我正在创建一个drupal站点,它应该包含一个功能,可以将干净的url转换为带有查询字符串的url 它的工作方式应该是: 用户可以在url栏中键入任何干净的url,如www.example.com/cabiods/sking。 我的问题是: 在.htaccess中,我放置了以下代码行: RewriteRule ^hobbies/([a-zA-Z0-9-]*) /index.php?hobbies=$1 [NC] 在drupal中,我创建了一个启用PHP过滤器的页面,然后输入 <?PHP

我正在创建一个drupal站点,它应该包含一个功能,可以将干净的url转换为带有查询字符串的url

它的工作方式应该是:

用户可以在url栏中键入任何干净的url,如www.example.com/cabiods/sking。 我的问题是: 在.htaccess中,我放置了以下代码行:

RewriteRule ^hobbies/([a-zA-Z0-9-]*) /index.php?hobbies=$1 [NC]
在drupal中,我创建了一个启用PHP过滤器的页面,然后输入

<?PHP echo $_GET['hobbies']; ?>
重写规则应该将www.example.com/cabiods/sking转换为www.example.com/index.php?cabiods=sking,但我猜代码没有按预期工作,或者drupal运行的代码跳过了.htaccess命令或其他内容

3.一旦url被翻译成脏url,页面将显示嗜好的价值,因为当您实际在url栏中键入www.example.com/index.php?嗜好=滑雪时,代码会起作用


你能帮我解决这个问题吗?

有一个更简单的方法,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];
}
更新

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

// 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;
}

这将在页面的内容区域中逐字打印出爱好之后的内容。我在哪里可以找到或修改它,或者把代码放在哪里?如果兴趣爱好/滑雪或任何我想输入的东西还没有出现,我还能得到那个值吗?谢谢你的大力帮助!万一你也知道答案。。我在哪里可以找到或修改它,或者把代码放在哪里?如果兴趣爱好/滑雪或任何我想输入的东西还没有出现,我还能得到那个值吗?谢谢你的大力帮助!无论您打算在何处使用$_GET['cabiods'],请使用上面的代码:-我指的是可能还不存在的页cabiods/。比如,创建一个动态页面,在整洁的url中键入的单词将被用作变量。非常感谢!不,这有点混乱,但实际上是一个用于获取URL部分的Drupal函数,它与PHP的func_get_参数或传递给调用函数的参数无关