.htaccess 这种重写实际上是做什么的?

.htaccess 这种重写实际上是做什么的?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我不明白这是怎么回事 请求URI的作用是什么?如果URL以“/new/”开头,它会将URL重写为new.php,将旧URL作为“title”字段的值 “/new/Foo+Bar?bam=bug AWWK!”变为“new.php?title=/new/Foo+Bar&bam=bug AWWK!”或(如果重写规则在.htaccess文件中)“new.php?title=new/Foo+Bar&bam=bug AWWK!”。如果(RewriteCond)请求的URI以/new//code>开头,则调用

我不明白这是怎么回事

请求URI的作用是什么?

如果URL以“/new/”开头,它会将URL重写为new.php,将旧URL作为“title”字段的值

“/new/Foo+Bar?bam=bug AWWK!”变为“new.php?title=/new/Foo+Bar&bam=bug AWWK!”或(如果重写规则在.htaccess文件中)“new.php?title=new/Foo+Bar&bam=bug AWWK!”。

如果(
RewriteCond
)请求的URI以
/new//code>开头,则调用脚本
new.php
。它将被作为
title
参数传递请求的URI,查询字符串(如果有)将被保留(
QSA
标志),并且在此之后将不再处理进一步的规则(
L
标志)

i、 e

  • http://example.com/new/test.html
    将调用
    http://example.com/new.php?title=/new/test.html
  • http://example.com/new/test2.html?query=test3
    将调用
    http://example.com/new.php?title=/new/test2.html&query=test3

    • 基本上,它可以生成漂亮的URL

      它采用类似http:/www.example.org/new/foobar的URL,并在后台调用


      请求URI是主机名之后的所有内容。在上面的例子中是/new/foobar。

      你的例子可以解释为

      RewriteCond %{REQUEST_URI} ^/new/
      RewriteRule ^(.*)$ new.php?title=$1 [L,QSA]
      
      如果URL请求是您的主机名(请求URI),后跟
      new
      文件夹

      RewriteCond %{REQUEST_URI} ^/new/
      
      然后将它们重写为主机名,后跟提供的字符串
      new.php?title=
      ,并在原始URL请求中以
      /new/
      后面的变量结束

      示例:URL请求到:

      RewriteRule ^(.*)$ new.php?title=$1 [L,QSA]
      
      服务器将其解释为:

      http://yoursite.com/new/orange
      
      REQUEUST_URI包含当前的。因此,该规则将应用于URL路径以
      /new/..
      开头的每个请求,并在内部将其重写/重定向到当前目录中的new.php文件(假设您没有使用
      RewriteBase
      更改基本URL路径)

      因此,如果在的.htaccess文件中使用此规则

      • 您的文档根目录(
        /
        ),请求
        /new/foo/bar
        将被重写/重定向到
        /new.php?title=new/foo/bar
      • /new/
        ,请求
        /new/foo/bar
        将被重写/重定向到
        /new/new.php?title=foo/bar
      • /new/foo
        ,请求将被重写/重定向到
        /new/foo/new.php?title=bar

      阅读有关重写的文档:
      http://yoursite.com/new.php?title=orange