2012-12-27 55 views
1

我想創建的.htaccess的動態規則頁面重定向來自:的.htaccess到靜態

http://www.mydomain.com/subdir/index.php?id=11&title=my-page-title 

到:

http://www.mydomain.com/11/my-page-title 

其中: - ID是一個整數 - 標題是字符串

我發現堆棧溢出一個類似的例子,但只有一個$_GET值,而不是.htaccess dynamic to static URL

回答

4

你說這個的方式其實是錯誤的。你想要做的是將傳入的請求,例如:

http://www.mydomain.com/11/my-page-title 

到腳本在/subdir/index.php

RewriteEngine On 
RewriteRule ^/?(.*)/(.*)$ /subdir/index.php?id=$1$title=$2 [L,QSA] 

注意這個特殊的方法將所有重定向你*/*格式的服務器上。如果您需要爲靜態文件創建例外或者只希望某些模式重定向,則應該在您的問題中更具體。

+0

我有index.php管理存儲在數據庫中的頁面(在表中我有列ID,標題,...,HTML),我想創建一個規則,使整個網站更多SEO友好。我試圖添加一些異常,如包含目錄,似乎都可以正常工作 – Danilo

+0

您能否向我解釋「[L,QSA]」的含義? – Danilo

+1

@Danilo「L」標誌意味着將其視爲文件中的最後一條規則。在其他過程中,這個規則,沒有其他任何東西。這是防止任何額外的重寫,這可能會改變所需的結果。 'QSA'標誌是一個查詢字符串追加,所以說你仍然想要傳遞URL參數到你的「乾淨」的URL。這將傳遞任何這樣的參數並將它們添加到重定向的URL的末尾。 –

2

試試這個位置:

RewriteRule /([0-9]+)/([a-z-]+) subdir/index.php?id=$1&title=$2 

此規則將尋找一些有至少1個diget和小寫的字符串,可以包含減號,這可能是a或只是-過。

相關問題