Whoops....

This is normal, internal URL:

/drupal7x/node/1

This is alias URL

/drupal7x/test

according to url function, alias is set to FASLE by default, BUT:

(dpm output)

    url('node/1') => /drupal7x/test

    url('node/1', array('alias' => TRUE)) => /drupal7x/node/1

    url('test') => /drupal7x/test

    url('test', array('alias' => TRUE)) => /drupal7x/test


Looking back in history:
D5 return TRUE
D6 return TRUE
D7 return TRUE

Core Usages of url [590 occurrentces], seems like it may affect a lot of place and modules.. hope im wrong..

Attached 2 patch, one is fixing the bug, 2nd is turn into TRUE by default.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

droplet’s picture

FileSize
1.53 KB

It's the right patch for set alias to TRUE by default.

url_fix.patch:

    url('node/1') => /drupal8x/node/1

    url('node/1', array('alias' => FALSE)) => /drupal8x/node/1

    url('node/1', array('alias' => TRUE)) => /drupal8x/test

    url('test') => /drupal8x/test

    url('test', array('alias' => FALSE)) => /drupal8x/test

    url('test', array('alias' => TRUE)) => /drupal8x/test

url_set_to_TRUE.patch:

    url('node/1') => /drupal8x/test

    url('node/1', array('alias' => FALSE)) => /drupal8x/node/1

    url('node/1', array('alias' => TRUE)) => /drupal8x/test

    url('test') => /drupal8x/test

    url('test', array('alias' => FALSE)) => /drupal8x/test

    url('test', array('alias' => TRUE)) => /drupal8x/test
nod_’s picture

Status: Needs review » Closed (works as designed)

No, read the doc it's the proper behavior.

alias mean "the path I'm putting in the first parameter is already an alias, don't look for one" not the opposite.
alias = TRUE means that no change will be made to the path you provide.

droplet’s picture

Title: url() alias bug » Rename url() alias parameter to is_alias
Status: Closed (works as designed) » Active
Issue tags: -Needs backport to D6, -Needs backport to D7

damn. I get it now.. I haven't read $path doc before...

Alias = TRUE, avoid an alias look up.
bad design and naming. other parameters, eg. absolute = TRUE, returns absolute URL.

can we move following to alias parameter

If you provide an internal path and $options['alias'] is set to TRUE, the
* path is assumed already to be the correct path alias, and the alias is
* not looked up.

and rename it to a better name ?

droplet’s picture

Priority: Major » Normal
nod_’s picture

well you'd have to rename absolute to is_absolute then is_external and is_https. I don't think that'd be clearer and would break so much stuff it's depressing :þ

droplet’s picture

It's good if that renamed all, hehe.

But I think it's a bit different

absolute TRUE
node/1 => exmpale.com/node/1

https TURE
enforce to https://xxxxxxxxxxxxx

external TRUE
return external URL

alias TRUE
node/1 => node/1

swentel’s picture

Category: bug » feature

Let's also move it outside the bug queue

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

smustgrave’s picture

Issue summary: View changes
Status: Active » Postponed (maintainer needs more info)

Wonder if this is still needed for D10?

apaderno’s picture

The \Drupal\Core\Url class does not use that option anymore. Url::fromUri() lists the following keys for the $options array.

  • query
  • fragment
  • absolute
  • attributes
  • language
  • https

Even the url_generator service does not seem to use alias.

smustgrave’s picture

Status: Postponed (maintainer needs more info) » Closed (outdated)

Think it’s safe to close out then. If anyone disagrees please reopen updating issue summary.

Thanks!