Views pager uses wrong URL when using views_embed_view() I have a custom AJAX app which allows the user to filter some nodes, which uses a View. By custom AJAX app, I mean that this is not just a view with AJAX enabled.

The user accesses /reports which includes the output of views_embed_view(). An AJAX-enabled browser interacts with the page, resulting in an AJAX call to /reports/ajax to fetch just the results and save a full page re-load.

It all works, except that the results returned by the View in this case use /reports/ajax as the base URL for the pager (because that's the path used to invoke the custom AJAX controller), which means that when the user clicks one, they get a page of AJAX response.

I would like to train Views to use a different URL (i.e. /reports) for pager requests. Beyond a str_replace in the output of views_embed_view(), is there another way?
Manually set $_GET['q'] to the appropriate value before calling views_get_view().

Views' pager uses the standard Drupal pager from includes/pager.inc which uses this request variable:

function theme_pager_link($variables) {
  // (... code omitted here ...)

  // @todo l() cannot be used here, since it adds an 'active' class based on the                                       
  //   path only (which is always the current path for pager links). Apparently,                                       
  //   none of the pager links is active at any time - but it should still be                                          
  //   possible to use l() here.                                                                                       
  // @see http://drupal.org/node/1410574                                                                               
  $attributes['href'] = url($_GET['q'], array('query' =&gt; $query));                                                     
  return '&lt;a' . drupal_attributes($attributes) . '&gt;' . check_plain($text) . '&lt;/a&gt;';   
}