0

How can I hide $_GET parameters from a URL?

I'm trying to get a URL like this: mysite.com/profile/?id=76561190000000009

To be usable like this: mysite.com/profile/76561190000000009/

My website already has a rewrite rule for hiding file types (.php, .html, etc.) and adding a trailing slash to the end of URL's so I haven't had any success with solutions I've found on here/around the web.

Current .htaccess I'm using:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

3 Answers3

0

Try this:

RewriteEngine On
RewriteRule ^profile/([^/]*)/$ /profile/?id=$1 [L]
Stefano Pascazi
  • 363
  • 1
  • 11
0

This probably is what you are looking for:

RewriteEngine On
RewriteRule ^/?profile/(\d+)/?$ /profile/?id=$1 [END]

In case you receive an internal server error (http status 500) using the rule above then chances are that you operate a very old version of the apache http server. You will see a definite hint to an unsupported [END] flag in your http servers error log file in that case. You can either try to upgrade or use the older [L] flag, it probably will work the same in this situation, though that depends a bit on your setup.

This implementation will work likewise in the http servers host configuration or inside a dynamic configuration file (".htaccess" file). Obviously the rewriting module needs to be loaded inside the http server and enabled in the http host. In case you use a dynamic configuration file you need to take care that it's interpretation is enabled at all in the host configuration and that it is located in the host's DOCUMENT_ROOT folder.

And a general remark: you should always prefer to place such rules in the http servers host configuration instead of using dynamic configuration files (".htaccess"). Those dynamic configuration files add complexity, are often a cause of unexpected behavior, hard to debug and they really slow down the http server. They are only provided as a last option for situations where you do not have access to the real http servers host configuration (read: really cheap service providers) or for applications insisting on writing their own rules (which is an obvious security nightmare).

arkascha
  • 41,620
  • 7
  • 58
  • 90
-1

Solved my problem by using this rewrite rule:

RewriteEngine On
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]

From this answer.