2013-04-08 78 views
0

我的意思是,所以可以说我有用户自身的页面:localhost/blog/profile/ImUser1创建跟进页面为用户

我想有像用户的其他网页: localhost/blog/profile/ImUser1/my_subscribers 或者 localhost/blog/profile/ImUser1/my_posts

如何创建那些类型的页面,如订阅者页面?

我当前的.htaccess代码:

RewriteEngine On 
CheckCaseOnly On 
CheckSpelling On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^profile/(.*)$ /blog/profile.php?username=$1 [QSA,L] 

这允许我去的userpage。而且我需要在URL,因为这就是我如何提取谁订阅了他们的信息的用户名。

这里是我的结构我的PHP至今:

if(isset($_GET['username']) === true && empty($_GET['username']) === false){ 
    $username = $_GET['username']; 

    if(user_exists($username) === true){ 
      echo 'Welcome to '.$username.' page!'; 
    } 
}else{ 
      echo 'Please enter a username in the URL'; 
} 

我如何调整我的PHP和的.htaccess,使其工作?

+0

检查了这一点:http://stackoverflow.com/questions/7930849/php-url-rewrite – 2013-04-08 18:26:05

回答

0

你可以额外的查询字符串变量添加到了profile.php请求指定的模式。事情是这样的:

RewriteRule ^profile/([a-zA-Z0-9_-]+)/?$ /blog/profile.php?username=$1 [L] 
RewriteRule ^profile/([a-zA-Z0-9_-]+)/([a-z][a-z_]*)/?$ /blog/profile.php?username=$1&mode=$2 [L] 

这样,/blog/profile/some_user/some_mode请求将请求发送到profile.php?username=some_user&mode=some_mode让你的PHP脚本来检查的模式变量和渲染页面或相应重定向的页面。

我已将用户名模式从(.*)更改为[a-zA-Z0-9_-]+,以阻止它歪斜正斜杠并要求它至少有一个字符长度。而且我用[a-z][a-z_]*的模式模式来要求它开始与小写字母,然后让下划线。