IP-based redirection using mod_rewrite
I'm running a small VPN server where each user has his own static IP.
I set up an Apache server in order to host files for each of them and instead of using a new registration system, I wanted to take advantage of those static IPs.
So I thought I could use mod_rewrite to achieve that and wrote this snippet:
RewriteEngine On
RewriteBase /
RewriteCond %REMOTE_ADDR 10.8.0.11
RewriteRule ^(.*)$ user1/ [L]
If user1, who has the IP 10.8.0.11, tries to reach http://10.8.0.1/, he's properly redirected to the appropriate subfolder http://10.8.0.1/user1/.
If user1 tries to reach any other subfolder, he's also properly redirected to his own subfolder.
Though there are some issues with this setup:
- if there's an index file on that folder, I end up with an internal error
- if there's any other file, I cannot download/run it
Is there any way I can overcome this?
I mean, locking a user on a specific subfolder based on his IP and allowing him to browse that folder (viewing a website, retrieving files...).
I'm sure there must be a more elegant/efficient way of writing this, but this should work to do what you require:
RewriteEngine On
RewriteBase /
# Restrict users from IP address 10.8.0.11 to user1 sub-folder
RewriteCond %REMOTE_ADDR 10.8.0.11
RewriteCond %REQUEST_URI !(user1)
RewriteRule ^(.*)$ /user1/$1 [L,R=301]
# Restrict users from IP address 10.8.0.12 to user2 sub-folder
RewriteCond %REMOTE_ADDR 10.8.0.12
RewriteCond %REQUEST_URI !(user2)
RewriteRule ^(.*)$ /user2/$1 [L,R=301]
Comments
Post a Comment