1

我正在使用 mod_rewrite 重写用户配置文件的 url,如下所示:domain.com/users/JohnSmith。

我在想也许跳过用户文件夹并简单地把它写成:domain.com/JohnSmith 会更整洁。

我的问题:如何做到这一点并保留我的系统和站点文件夹?如果我查找 domain.com/browsersupport,profile.php 页面将检查名称并在数据库中查找它,并且由于没有用户具有该名称,因此不会显示任何页面。

我知道它可以通过 PHP 代码中的一些 if 语句来修复。此外,需要保留文件夹名称,以便用户无法注册这些名称。但是对于配置文件查找 - 有没有更简洁的方法?也许要排除 .htaccess 文件中的系统文件夹,以便 profile.php 不会去寻找那个用户?

4

2 回答 2

1

这就是这两个条件发挥作用的地方:

  # if the request does NOT map to a file
  RewriteCOnd %{REQUEST_FILENAME} !-f
  # and the request does NOT map to a directory
  RewriteCOnd %{REQUEST_FILENAME} !-d
  # only THEN use this rewriterule
  RewriteRulle ....etc...

如果您同时拥有动态”页面和动态用户,则 RewriteRule 应该以检查该名称的页面是否存在的过程结束,并且只有在不存在时才为用户页面提供服务。

于 2012-06-19T19:49:33.433 回答
0
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule #insert user rewrite rule here

如果该给定名称的文件夹或文件不存在,这只会应用重写规则(您的问题似乎暗示browsersupport文档根目录中确实存在类似的内容)。

是的,您必须努力让用户知道他们不能像这样注册某些名称。如果他们这样做,他们将无法通过该路由访问他们的用户名。

我已经这样做了,但我有一个自我强加的规则,它可能不适合所有人,但对我有用:用户名必须至少为 5 个字符,控制器为 4 个或更少。

于 2012-06-19T19:48:44.040 回答