0

我正在尝试使用 mod rewrite 使我的 url 变短。有人告诉我它可以使用 htaccess 来实现吗?

虽然我是 php/mysql 的新手,但我会尝试通过谷歌和我有限的知识来解决我自己的问题。但是我对htaccess一无所知,所以我正在寻求帮助。

我的用户资料位于

http://www.mysite.com/user/index/169

169用户在哪里id

如何将其更改为 mysite.com/username 之类的内容?

我使用的脚本已经使用 mod_rewrite 来创建目录

/user/index 不是物理文件夹。

谁能帮忙?

4

1 回答 1

0

如果您的用户名和 id 值存储在 MySQL 数据库中,那么 Apache 将无法将用户名转换为数字 id。(您可以使用 RewriteMap 来进行这种转换,但它会变得混乱和脆弱。)

相反,您可以让 Apache 将用户名转发到 PHP 脚本,然后让该 PHP 脚本为该用户名提供内容。(因为 PHP 可以查询 MySQL 数据库。)

一旦您编写了一个基于用户名提供用户配置文件的 PHP 脚本(例如称为 show_profile.php),您可以使用 Apache 在顶级公共的 .htaccess 文件中调用此脚本目录:

RewriteRule ^user/([a-zA-Z0-9_-]+)$ show_profile.php?username=$1

这将发送一个请求,www.mysite.com/user/ExampleUser_1981以便/show_profile.php?username=ExampleUser_1981您可以使用$_GET['username']预定义的请求变量在 PHP 脚本中读取用户名的值。

请注意,此模式允许用户名包含小写 (az)、大写 (AZ)、数字 (0-9)、下划线和连字符。但是自定义模式以仅允许那些允许出现在您网站上的用户名中的字符。

我不建议简单地使用 www.mysite.com/username 模式,因为这意味着您必须添加规则来检查请求不是针对实际文件的,而且我认为使用 /user/username 模式看起来更整洁.

于 2013-06-18T14:38:11.327 回答