Emre Akdağ
Emre Akdağ

Reputation: 3

.httaccess with redirect

how do I make a redirect this way

www.url.com/site/7/index.php => www.url.com/packets/index.php?id=7&url=index.php

currently used .htaccess

RewriteRule ^site/([0-9]+)/([0-9a-zA-Z-_]+)$  packets/index.php?id=$1&url=$2 [L,QSA]

need httaccess code to redirect this way

Upvotes: 0

Views: 206

Answers (1)

arkascha
arkascha

Reputation: 42984

The issue with your own approach (your rewrite rule) is that it does not match the incoming request: [0-9a-zA-Z-_] does not match the literal full stop (".")...

I guess this is what you are looking for:

RewriteEngine on
RewriteRule ^/?site/(\d+)/(.+)/?$ /packets/index.php?id=$1&url=$2 [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 rule 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).

Upvotes: 1

Related Questions