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]

这使我可以访问用户页面。我需要在 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 以使其正常工作?

4

1 回答 1

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_]*模式模式要求它以小写字母开头,然后允许下划线。

于 2013-04-08T22:26:40.630 回答