.htaccess如何重定向工作?

时间:2009-08-12 08:19:20

标签: .htaccess mod-rewrite

我想了解.htaccess如何重定向工作。

比方说,我的用户导航到:

  

www.website.com/users/bob

如何将该用户重定向到:

  

www.website.com/users.php?user=bob

2 个答案:

答案 0 :(得分:3)

你的.htaccess看起来像这样:

# turn on the engine
RewriteEngine On

RewriteRule ^users/(.*)$ /users.php?user=$1

# Pattern:
# ^      = start of URL (.htaccess doesn't get the leading "/")
# users/ = your path
# (.*)   = capture any character, any number of times
# $      = end of string

# Result:
# /users.php?user= = your path
# $1               = the first group captured in the pattern

答案 1 :(得分:0)

我建议你阅读technical details of mod_rewrite。在那里,您可以很好地了解内部处理。

对于您的具体示例,合适的规则可能如下所示:

RewriteRule ^users/([a-z]+)$ users.php?user=$1

现在请求/users/bob时,mod_rewrite将:

  1. 从请求的路径中删除上下文每个目录前缀(/,如果.htaccess文件位于文档根目录中)
  2. 针对模式测试其余部分(users/bob),直到匹配为止
    • 如果有任何相应的RewriteCond指令,它们也会被测试
  3. 将当前网址替换为新网址(同时替换$ n % n 如果模式匹配且条件评估为真
  4. ,则使用相应的匹配项) 如果替换的URL不是绝对URL路径(以/开头)或绝对URL(以URL方案开头),则
  5. 添加上下文每目录前缀