RewriteCond %{REQUEST_URI} ^/new/
RewriteRule ^(.*)$ new.php?title=$1 [L,QSA]
IM困惑,這是什麼呢....這個重寫實際上做了什麼?
什麼的REQEUST_URI嗎?
RewriteCond %{REQUEST_URI} ^/new/
RewriteRule ^(.*)$ new.php?title=$1 [L,QSA]
IM困惑,這是什麼呢....這個重寫實際上做了什麼?
什麼的REQEUST_URI嗎?
如果(RewriteCond
)請求的URI以/new/
開頭,則調用腳本new.php
(RewriteRule
)。它將通過請求的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
如果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!」。
基本上它使漂亮迷人的URL。
它需要一個URL,如http:/www.example.org/new/foobar,並在後臺調用http://www.example.org/new.php?title=foobar。
REQUEST_URI是主機名後的所有內容。在上面的例子中是/ new/foobar。
你舉的例子可以解釋
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
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
。
閱讀RewriteCond的文檔:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond – outis 2009-11-04 23:18:31