2014-01-14 217 views
1

我從數據庫以下動態網址:的.htaccess重寫動態URL的規則

http://mydomain.com/download.php?id=1234&name=title-of-this-download&category=windows 

此URL是永久性的rewrited到:

http://mydomain.com/windows/title-of-this-download 

什麼重寫規則應該有在.htaccess文件?

到目前爲止,我想出了這一點:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+?)/?$ /?name=$1 [L,QSA] 

但它重寫任何東西。 在此先感謝。

回答

1

您將缺少ID,因爲它不是永久URL的一部分。在URL中沒有ID,mod_rewrite的是不會知道是什麼填補了$_GET['id'] GET參數,所以你能做的最好的是:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/?$ /download.php?name=$2&category=$1 [L] 

,並可能還需要

RewriteCond %{THE_REQUEST} \ /+download\.php\?(id=[0-9a-f]+&)?name=([^&]+)&category=([^&\ ]+) 
RewriteRule^/%3/%2? [L,R=301] 
+0

大!謝謝。有用!還有一個問題:在這個例子中,我把這個ID寫成4位數字。其實它就像4a2e41cc168cb。我應該如何爲此調整RegEx? – user1725719

+0

@ user1725719我將它改爲'[0-9a-f]' –

+0

感謝您的回答,它的工作原理! – user1725719