假设我有一个网站
www.mysite.com
无论如何都必须有用户页面网址
www.mysite.com/username
而不是通常的
www.mysite.com/user.php?id=whatever
我想知道这在 php 中是否可以在没有多个文件夹和索引页的情况下实现。我想避免使用文件夹方法,因为据我了解,您将遇到效率问题,特别是如果您必须从一个用户跳到另一个用户。我想做这种方法,因为有人更容易说从中获取我的信息
www.mysite.com/username
而不是其他选项。任何帮助(教程、网站等)将不胜感激。提前谢谢。
我想知道这在 php 中是否可以在没有多个文件夹和索引页的情况下实现。
是的,这是可能的。您可以将所有请求重定向到索引.php并手动处理此 URL(路由)
示例 .htaccess 用于将所有请求重定向到索引.php
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L,QSA]
但是实施
www.mysite.com/username
这不是一件容易的事情。你必须知道你所有的系统使用,如/register,/login,/post,...等,不允许注册这些用户名。我建议您实施此方案:
www.mysite.com/~username
或 www.mysite.com/user/username
将前端控制器模式应用于任何类型的路由器 [例如 klein],那么您需要在 webroot 中使用单个通用.htaccess
文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
是的,当然,在您的DOCUMENT_ROOT/.htaccess
文件中使用此规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /user.php?id=$1 [L,QSA]