2013-02-06 127 views
0

我的一行代碼使用了mod_rewrite拉起從數據庫的結果,例如:mod_rewrite的規則herierarchy

example.com/anytext/itemid使用以下網址:example.com/item.php?id=itemid

一個簡單的重寫。不過,我想制定一個優於它的規則。下面我們來看看我的意思:

.htaccess文件例如:

RewriteRule ^products/[^/]+/(.*)$ products/item.php?id=$1 [L] 

這個規則告訴example.com/products/anytext/itemid使用item.php使用URL的最後部分的「/」後,這是該項目的ID來顯示。

但是,我想要一些URL重定向而不是重寫。例如:

products/green-dress/4023成爲:

products/green-dress-with-stain/4023 無需重寫規則中踢!

現在,我已經在.htaccess中嘗試了一個簡單的301重定向,但它以某種方式干涉了重寫規則。

而不是去

products/green-dress-with-stain/4023不言而喻:

products/green-dress-with-stain4023?id=4023

見末尾的URL如何得到一個變量?奇怪的!

謝謝, 戴夫

+0

Mod_alias(例如'Redirect'和'RedirectMatch'指令)優先於mod_rewrite。您可以使用它們來確保在.htaccess文件中首先解析並執行它們。文件內的位置是不相關的。 –

+0

當我做「重定向301 /綠色禮服/ 4052 /綠色禮服與污點/ 4052」的URL變成:example.com/green-dress-with-stain/4052?id=4052「...我不明白爲什麼它在最後添加ID變量......怪異的! –

+0

@faa我的猜測是因爲重寫規則干擾了重定向規則... –

回答

0

.htaccess文件中的規則按順序執行的,所以如果你需要有一個規則凌駕於其他,簡單地把它先在文件中。

+0

我如何使它不重定向301永久重定向?我基本上有一些項目獲得更新的URL,我不希望舊的URL工作,因爲我希望舊的URL被引導到新的URL。 –

+0

我添加了一個301重定向,但重寫規則在最後插入,並在重定向URL的末尾添加了變量?id = number ...有關如何解決的任何想法? –