【问题标题】:Adding on to a username in the URL with mod_rewrite?使用 mod_rewrite 在 URL 中添加用户名?
【发布时间】:2013-03-29 00:51:59
【问题描述】:

我现在建立了一个网站,每个用户都有自己的页面。

Example: www.example.com/user

但现在我想知道如何为每个用户设置不同的部分。

Example: www.example.com/user/photos

我该怎么做?

这是我的用户页面的 htaccess;

RewriteEngine On

RewriteOptions MaxRedirects=1

RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 

RewriteRule .* - [L]
RewriteRule ^(.*)$ userpage.php?user=$1 [QSA,L]

【问题讨论】:

  • 如果我理解您的重写规则,您会将 url 中的所有内容发送到 $1,因此如果访问者访问 www.exemple.com/user/photos 那么 $1 = user/photos ...您可以使用一个 list/explode 函数来查找用户想要访问的页面。我希望我很清楚:)

标签: php .htaccess url mod-rewrite


【解决方案1】:

理想情况下,请求被重写到的页面是主控制器/调度程序。我使用的方法是

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

然后

$route = explode('/', $_GET['rt']);

在你的情况下会产生:

array( 'user' , 'photos' )

通过这种方式,您可以使用单个脚本来确定要加载程序的哪一部分,然后简单地包含它。如果您决定稍后向您的网站添加不同的功能,而不必完全重新排列您的代码,只需向您的控制器添加另一个部分。

【讨论】:

  • 非常感谢!为了在 photos.php 中获取用户名,我想我可以再次分解 URL。还是有更好的方法?
  • @user2127833 有很多不同的方法可以做到这一点,你可以直接访问photos.php中的$_GET['rt'],或者将用户名[或其他变量]放入某些变量中,然后在photos.php,也许将用户名弹出到$_SESSION。我的大多数项目都是基于 OOP 的,代码可能类似于 include('class.photos.php'); $obj = new Photos($username); $obj->render();。这完全取决于什么最适合您。
  • 哦还有一件事,我现在有点迷失了。所以我创建了一个索引页面并做了这个if (count($route)==1){ header('Location: '); } 但是我应该在该位置放置什么才能到达www.example.com./user?用户名等于 $route[0]...
  • @user2127833 不要那样做,你会得到一个无限的重定向循环。使用include()
【解决方案2】:

如果我理解您的问题,您希望每个用户都有不同的网址,例如

  www.example.com/user1/photos
  www.example.com/user2/photos

为此,您可以使用类似的东西

 RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$ 
 RewriteRule ^ userpage.php?user=%1&url=%2 [S=1,L]

 RewriteCond %{REQUEST_URI} ^/(.*)$ [NC]
 RewriteRule ^ userpage.php?user=%1 [S=1,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多