0

クリーンなURLをクエリ文字列を使用してURLに変換する機能を含むdrupalサイトを作成しています。

それが機能する方法は次のようになります。

  1. ユーザーは、URLバーにwww.example.com/hobbies/skiingのようなクリーンURLを入力します。
  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に変換されると、実際にwww.example.com/index.php?hobbies=skiingをURLバーに直接入力するとコードが機能するため、ページに趣味の値が表示されます。 。

これを手伝ってくれませんか。

4

1 に答える 1

0

これを行うにははるかに簡単な方法があります。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;
}

これhobbies/により、ページのコンテンツ領域にあるものが文字通り印刷されます。

于 2011-10-25T14:14:15.720 に答える