Reputation: 87
I am trying to make my url more friendly, from domain/link/link.php?id=123 to domain/link/123
I have written the following rule:
RewriteEngine On
RewriteRule ^([^/]*)$ link.php?id=$1 [L]
It is on a .htaccess in /link folder.
In my link.php file I have:
echo $_GET['id'];
But the result is always "link.php" without quotes, instead of the number or string.
What am I doing wrong?
Upvotes: 2
Views: 30
Reputation: 91734
You have specified that it is the last rule using the L
flag, but as soon as the rewritten url is requested, it will be rewritten again.
There are 2 possible solutions:
An example of the first option:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ link.php?id=$1 [L]
(note that I have changed *
zero or more with +
one or more)
An example of the second option:
RewriteEngine On
RewriteRule ^(\d+)$ link.php?id=$1 [L]
^^^ Look for 1 or more digits
Upvotes: 0