假设我有一个网站
www.mysite.com
无论如何必须要有用户页面网址
www.mysite.com/username
而不是通常的
www.mysite.com/user.php?id=whatever
我想知道如果没有多个文件夹和索引页面,这是否可行。我想避免使用文件夹方法,因为根据我的理解,你会遇到效率问题,特别是如果你必须从一个用户反弹到另一个用户。我想这样做,因为有人说从
获取我的信息要容易得多www.mysite.com/username
比其他选项。任何帮助(教程,网站等)将不胜感激。提前谢谢。
答案 0 :(得分:2)
我想知道如果没有多个文件夹和索引页面,这是否可行。
是的,它可能。您可以将所有请求重定向到index.php并手动处理此URL(路由)
示例.htaccess用于将所有请求重定向到index.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
答案 1 :(得分:2)
将front controller pattern应用于任何类型的路由器[例如klein],那么您的webroot中需要一个通用的.htaccess
文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
答案 2 :(得分:1)
是的,请在DOCUMENT_ROOT/.htaccess
文件中使用此规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /user.php?id=$1 [L,QSA]