14

I want to redirect a URL containing a hash to another URL.

Example: example.com/#test should redirect to example.com/teste_page

Can this be done using the .htaccess file?

Trilarion
  • 9,318
  • 9
  • 55
  • 91
Bruno Fernandes
  • 222
  • 1
  • 4
  • 13

3 Answers3

37

Yes it can be done, just use the No Escape flag... [NE,R,L]

Chandrachur
  • 547
  • 1
  • 4
  • 2
  • So what would the full rule be in HTACCESS? `RewriteRule ^(.*)#(.*)$ /$1$2 [NE,R,L]` ? – Justin Oct 23 '13 at 21:23
  • 18
    This is the right answer to the wrong question. With this you could convert 'example.com/teste_page' to 'example.com/#test' not the other way around – Tony Brix Apr 10 '15 at 17:00
13

No, hashes are never sent to the server, they are in-page fragment identifiers, so only used by the browser. So you're .htaccess would never have access to the hash. You'd have to do some nifty redirects to get that info to your server.

Here are some ideas that might spark something:

http://forum.modrewrite.com/viewtopic.php?t=3912

swatkins
  • 13,219
  • 4
  • 42
  • 75
  • 1
    You can only redirect from opposite direction, from example.com/teste_page to example.com/#test. Sending a header Location with url that contain a hash work. – jcubic Sep 27 '12 at 15:58
-1

This cannot be done with .htaccess - as far as the browser is concerned, the # and anything following it does not need to be sent to the server, as it's a link for the browser to resolve.

Here's a related question, as well as an example:

Note google thinks the request was: http://www.google.com/thisisa404?query=string#fragment

Community
  • 1
  • 1
Tim Lytle
  • 17,008
  • 9
  • 59
  • 88