0

I'm lost here. I'm using this script to give users the opportunity to enter their username lijke this:domain/username

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/?$ userpage.php?user=$1 [NC,L] </IfModule> 

This works fine. However, every user has pages I must link to: Video, Music, Images etc...

So I need something like:

domain/username/video 

In php code it must be something like:

user.php?user=test&page=video 

And one other question: What is the preferable way to link in this situation?

userpage.php?user=test&page=video 

or

/test/video 

And finally: Is it possible to deny the possibility to enter the url: domain/userpage.php?user=test&page=video? Instead just always show: domain/test/video

Thanks in advance

2 Answers 2

1

I'm not 100% sure what you're asking? Do you need to change the rewrite rule to match the URL site.com/moonwalker/videos? You could try this:

RewriteRule ^([^/]+)/(images|videos|music)/?$ userpage.php?user=$1&page=$2 [NC,L] 

Update Just a quick note on the domain/member/videos URL structure. That could end up causing you problems in the future. For instance what if you decide to have a single page that shows all member videos? You'd probably want to URL to look something like site.com/members/videos. That's a problem, because the rewrite rule will also match that, but "members" isn't a member username.

I would probably structure my member page URLs like site.com/user/moonwalker/videos so it doesn't clash with future rewrite rules. You would change the above rewrite rule to this:

RewriteRule ^user/([^/]+)/(images|videos|music)/?$ userpage.php?user=$1&page=$2 [NC,L] 

Then later on you can add a rewrite rule like:

RewriteRule ^members/(images|videos|music)/?$ allusers.php?page=$1 [NC,L] 

To show all member videos.

Sign up to request clarification or add additional context in comments.

4 Comments

Hmm...I'm trying to do the following: domain/moonwalker/video in the background this script is running: userpage.php?user=moonwalker&page=images I tried your script but I get 404 error.
Does the 404 error show which page is not found? i.e. "404 - userpage.php not found"
This is the complete error: The requested URL /moonwalker/video was not found on this server.
The rewrite rule above uses "videos". Not "video".
1

Yes, it is possible by looking at the request line:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /userpage\.php[?\ ] RewriteRule ^userpage\.php$ - [F] 

This is necessary as the URL path could already be rewritten by another rule and thus using just RewriteRule would match those already rewritten requests too.

8 Comments

I'm doing something wrong, because a 404 error keeps showing up. And thanks for the answer. :)
@moonwalker: Where do you want to use that rule?
@Gumbo: At this moment I'm trying to get everything to work on my local server. So: localhost
@moonwalker: Yes, but in what context? Server/virtual host configuration or an .htaccess file?
Oh sorry. No just an .htaccess file.
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.