1

假设我有一个网站

www.mysite.com

无论如何必须要有用户页面网址

www.mysite.com/username

而不是通常的

www.mysite.com/user.php?id=whatever

我想知道这是否可以在没有多个文件夹和索引页的情况下在 php 中实现。我想避免使用文件夹方法,因为据我了解,您会遇到效率问题,特别是如果您必须从一个用户反弹到另一个用户。我想做这种方法,因为有人说从那里获取我的信息要容易得多

www.mysite.com/username

比其他选项。任何帮助(教程、网站等)将不胜感激。提前致谢。

4

3 回答 3

2

我想知道这是否可以在没有多个文件夹和索引页的情况下在 php 中实现。

是的,有可能。您可以将所有请求重定向到您的 index.php 并手动处理此 url(路由)

用于将所有请求重定向到您的 index.php 的示例 .htaccess

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L,QSA]

但是实施

www.mysite.com/username

不是一件容易的事。您必须知道所有系统 usrls,例如 /register、/login、/post 等,并且不允许注册这些用户名。我建议您实施此方案:

www.mysite.com/~username 或者 www.mysite.com/user/username

于 2013-11-01T13:33:55.693 回答
2

前端控制器模式应用于任何类型的路由器 [例如klein.htaccess ],然后您的 webroot 中需要一个单一的通用文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
于 2013-11-01T13:35:23.667 回答
1

是的,请在您的DOCUMENT_ROOT/.htaccess文件中使用此规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /user.php?id=$1 [L,QSA]
于 2013-11-01T13:28:33.940 回答