.htaccess重定向如何工作?
我试图了解.htaccess重定向是如何工作的 例如,我的用户导航到: www.website.com/users/bob 如何将该用户重定向到: www.website.com/users.php?user=bob.htaccess重定向如何工作?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我试图了解.htaccess重定向是如何工作的 例如,我的用户导航到: www.website.com/users/bob 如何将该用户重定向到: www.website.com/users.php?user=bob 您的.htaccess将如下所示: # turn on the engine RewriteEngine On RewriteRule ^users/(.*)$ /users.php?user=$1 # Pattern: # ^ = start of URL (.ht
您的.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
RewriteRule ^users/([a-z]+)$ users.php?user=$1
您的.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
RewriteRule ^users/([a-z]+)$ users.php?user=$1
我建议你读一下这本书。在这里,您可以很好地了解内部处理 对于您的特定示例,合适的规则可能如下所示:
# 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
RewriteRule ^users/([a-z]+)$ users.php?user=$1
现在,当请求/users/bob
时,mod_rewrite将:
/
,如果.htaccess文件位于文档根目录中)users/bob
)直到其中一个匹配
- 如果有任何相应的
指令,也会对它们进行测试RewriteCond
$
n
和%
n
替换为相应的匹配项)/
开头)或绝对URL(以URL方案开头),请重新添加每个目录的上下文前缀我建议你读一下这本书。在这里,您可以很好地了解内部处理 对于您的特定示例,合适的规则可能如下所示:
# 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
RewriteRule ^users/([a-z]+)$ users.php?user=$1
现在,当请求/users/bob
时,mod_rewrite将:
/
,如果.htaccess文件位于文档根目录中)users/bob
)直到其中一个匹配
- 如果有任何相应的
指令,也会对它们进行测试RewriteCond
$
n
和%
n
替换为相应的匹配项)/
开头)或绝对URL(以URL方案开头),请重新添加每个目录的上下文前缀您可能还应该提到上面的RewriteBase。现在是$1…如果我想在这里添加第二条规则,但不是website.com/users/bob,而是website.com/show/where,并将其重定向到website.com/show.php?id=where。我会简单地复制那一行,改变细节,然后在末尾放一个$2吗?不,你仍然会使用$1-它是关联规则中的组。例如,你可以有/users/bob/bobbinson,match/users/([^/]*)/(.*),然后$1是bob,$2是bobbinson,你可能还应该提到上面的RewriteBase。现在$1…如果我想在这里添加第二条规则,但不是website.com/users/bob,它应该是website.com/show/where,并将其重定向到website.com/show.php?id=where。我会简单地复制那一行,改变细节,然后在末尾放一个$2吗?不,你仍然会使用$1-它是关联规则中的组。例如,你可以有/users/bob/bobbinson,match/users/([^/]*)/(.*),然后$1是bob,$2是bobbinson。像这样的问题在这里和serverfault.com上层出不穷。例如:像这样的问题在这里和serverfault.com上层出不穷。这个怎么样,例如: