0

我有一个用户配置文件系统,其中一个动态页面(profile.php)随着用户 ID 的变化而变化。例如。profile.php?id=2 显示 id=2 的用户的个人资料。但我希望地址为 user/user_name.php。因此,为每个用户提供一个唯一的个人资料页面地址。是否可以不为每个用户创建单独的页面?谢谢

4

1 回答 1

1

好的,让我们谈谈 apache 的 mod_rewrite。基本上人们通常做的是他们设置一个 php 页面,例如。index.php 并在那里重定向所有请求(请求现有文件和目录的请求除外),然后 index.php 将这些请求路由到适当的文件/演示者/控制器等。

我将向您展示一个非常简单的示例如何做到这一点,这只是为了让您了解它在基础知识中的工作原理,并且有更好的方法可以做到这一点(例如看看一些框架)。

所以这是一个非常简单的 .htaccess 文件,与 index.php 放在同一目录中:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # prevents files starting with dot to be viewed by browser
    RewriteRule /\.|^\. - [F]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) index.php?query=$1 [L]
</IfModule>

这是 index.php:

<?php
    $request = explode("/", $_GET["query"]);
    // now you have your request in an array and you can do something with it
    // like include proper files, passing it to your application class, whatever.
    // for the sake of simplicity let me just show you the example of including a file
    // based on the first query item

    // first check it´s some file we want to be included
    $pages = array("page1", "page2", "page3");
    if(!in_array($request[0], $pages)) $request[0] = $pages[0];
    include "pages/".$request[0];

但我强烈建议你不要重新发明轮子,看看一些现有的 php 框架。一旦你学会了如何使用它,你会发现它为你节省了很多工作。提到一些 - Zend FrameworkSymfony和我正在使用的 - Nette Framework。还有更多,因此请选择适合您需求的任何内容。

于 2013-07-06T06:53:34.250 回答