开发者

Mod rewrite user URL

I'm lost here. I'm using this script to give users the opportunity to enter their username lijke th开发者_StackOverflowis: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


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜