用户每次在我的网站上注册时,我希望他们拥有自己的子目录及其注册的“用户名”。每个用户子目录都将具有相同的“index.php”文件,该文件将执行某些操作。
例如:“/ users / username1 /”和“/ users / username2 /”
如果有人想要访问子目录,他们可以简单地去: “www.example.com/users/username1/”或“www.example.com/users/username2 /”
简单易乱的解决方案是为每个用户创建一个子目录,并在每个目录中放置相同的“index.php”文件。但对我来说,这只会占用我的服务器空间并使我的目录变大。
我想知道是否可以使用.htaccess完成所有这些操作?我可以创建一个“index.php”和一个“.htaccess”文件并将它们放在我的“/ users /”目录中吗?我必须将哪些实际代码放在我的.htaccess文件中?
如果您有更好的方法,请告诉我。我使用Apache和PHP作为我的工作环境。
谢谢
答案 0 :(得分:6)
嗯,例如,您可以使用这样的一个htaccess来完成所有操作:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
它的作用:
基本上这意味着如果您输入urdo,例如yourdomain.com/users/ivan/,您的请求将被重定向到:
index.php?url=/users/ivan
然后你在index.php中使用$ _GET ['url']并将其拆分成碎片。
这只是一个示例,还有其他mod_rewrite方法可以做到这一点。
答案 1 :(得分:0)
让它成为虚拟的。没有子目录,您可以使用mod_rewrite来模拟它。
使用mod_rewrite,您可以将/ users / username1引向/users.php?user=username1。对于客户来说,一切都是透明的,他不会注意到真正发生的事情。
答案 2 :(得分:0)
通过使用这样的东西:
RewriteEngine On
RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L]
You can customize RewriteRule as much as you want.
您基本上可以键入所需的任何目录,并将其重定向到index.php页面。
如果要确保不重定向现有目录,请执行以下操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L]
如果要限制范围,那么只重定向user/
的子目录(类似于Stack Overflow),只需将'user'添加到规则的开头:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/([\-_0-9A-Za-z]+)$ index.php?a=$1 [L]
最后,如果你想让一个单独的文件处理所有与你的实际index.php页面分开的用户请求:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/([\-_0-9A-Za-z]+)$ users.php?a=$1 [L]
这是我用来分发CSS文件的非常类似的设置。
注意:目录将包含$_GET['a']