Community Documentation

custom_url_rewrite_inbound

6 core.php custom_url_rewrite_inbound(&$result, $path, $path_language)

custom_url_rewrite_inbound is not a hook, it's a function you can add to settings.php to alter incoming requests so they map to a Drupal path. This function is called before modules are loaded and the menu system is initialized and it changes $_GET['q'].

This function should change the value of $result by reference.

Parameters

$result: The Drupal path based on the database. If there is no match in the database it'll be the same as $path.

$path: The path to be rewritten.

$path_language: An optional language code to rewrite the path into.

Related topics

File

developer/hooks/core.php, line 2738
These are the hooks that are invoked by the Drupal core.

Code

<?php
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  global $user;

  // Change all article/x requests to node/x
  if (preg_match('|^article(/.*)|', $path, $matches)) {
    $result = 'node' . $matches[1];
  }
  // Redirect a path called 'e' to the user's profile edit page.
  if ($path == 'e') {
    $result = 'user/' . $user->uid . '/edit';
  }
}
?>

Comments

Remember, if you're rewriting

Remember, if you're rewriting the complete path to a new path that may exist in url_alias, you should call drupal_lookup on your final return because this function call occurs AFTER Drupal calls its drupal_lookup_path.

or you will get 404's on paths that are aliased etc.

function custom_url_rewrite_inbound(&$result, $in_path, $path_language) {

  $result = preg_replace("/(somethingfiddly)./", "", $in_path);

  if ($src = drupal_lookup_path('source', $in_path, $path_language)) {
    $result = $src;
  }
}

Login or register to post comments