2009-11-04 42 views
0
RewriteCond %{REQUEST_URI} ^/new/ 
RewriteRule ^(.*)$ new.php?title=$1 [L,QSA] 

IM困惑,這是什麼呢....這個重寫實際上做了什麼?

什麼的REQEUST_URI嗎?

+4

閱讀RewriteCond的文檔:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond – outis 2009-11-04 23:18:31

回答

1

如果(RewriteCond)請求的URI以/new/開頭,則調用腳本new.phpRewriteRule)。它將通過請求的URI作爲title參數,查詢字符串(如果有的話)將被保留(QSA標誌),並且在此之後(L標誌)將不會處理進一步的規則。

  • 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
0

如果URL以「/ new /」開頭,則會將URL重寫爲new.php,並將舊URL作爲「title」字段的值。

「/ new/Foo + Bar?bam = bug-AWWK!」變成「new.php?title =/new/Foo + Bar & bam = bug-AWWK!」或者(如果RewriteRule在.htaccess文件中)「new.php?title = new/Foo + Bar & bam = bug-AWWK!」。

0

基本上它使漂亮迷人的URL。

它需要一個URL,如http:/www.example.org/new/foobar,並在後臺調用http://www.example.org/new.php?title=foobar

REQUEST_URI是主機名後的所有內容。在上面的例子中是/ new/foobar。

0

你舉的例子可以解釋

RewriteCond %{REQUEST_URI} ^/new/ 

如果URL請求爲您的主機名(REQUEST_URI)由new文件夾遵循...

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

然後重寫他們作爲提供主機名後續字符串new.php?title=,並在原始URL請求中的/new/之後以變量結尾。

例如:URL請求到:

http://yoursite.com/new/orange 

服務器將它解釋爲:

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

REQEUST_URI包含當前absolute URL path。因此,該規則將應用於每個請求的URL路徑以/new/…開頭,並在當前目錄中重寫/重定向到new.php文件(假設您沒有更改基本URL路徑RewriteBase)。

所以如果你在使用這個規則。

  • 您的文檔根目錄(/)的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
相關問題