这次重写实际上做了什么?

时间:2009-11-04 23:16:08

标签: .htaccess mod-rewrite

RewriteCond %{REQUEST_URI} ^/new/
RewriteRule ^(.*)$ new.php?title=$1 [L,QSA]
我很困惑这是做什么的....

REQEUST_URI做了什么?

5 个答案:

答案 0 :(得分:1)

如果(RewriteCond)请求的URI以/new/开头,则调用脚本new.phpRewriteRule)。它将作为title参数传递请求的URI,将保留查询字符串(如果有)(QSA标志),并且在此之后不会处理其他规则({{ 1}}标志)。

  • L会致电http://example.com/new/test.html
  • http://example.com/new.php?title=/new/test.html会致电http://example.com/new/test2.html?query=test3

答案 1 :(得分:0)

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

“/新/美孚+ Bar吗?BAM =臭虫AWWK!”成为“new.php?title = / new / Foo + Bar& bam = bug-AWWK!”或者(如果RewriteRule在.htaccess文件中)“new.php?title = new / Foo + Bar& bam = bug-AWWK!”。

答案 2 :(得分:0)

基本上它会制作精美漂亮的网址。

它需要一个像http:/www.example.org/new/foobar这样的网址,并在后台调用http://www.example.org/new.php?title=foobar

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

答案 3 :(得分:0)

您的示例可以解释为

RewriteCond %{REQUEST_URI} ^/new/

如果URL请求是您的主机名(REQUEST_URI),请按new文件夹...

RewriteRule ^(.*)$ new.php?title=$1 [L,QSA]

然后将其重写为主机名,后跟提供的字符串new.php?title=,并在原始网址请求中以/new/后的变量结束。

示例:URL请求:

http://yoursite.com/new/orange

服务器会将其解释为:

http://yoursite.com/new.php?title=orange

答案 4 :(得分:0)

REQEUST_URI 包含当前absolute URL path。因此,该规则将应用于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