.htaccess重写动态网址规则

时间:2014-01-14 07:10:25

标签: .htaccess url dynamic rewrite

我从数据库中获得了以下动态网址:

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

此网址必须永久重写为:

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

.htaccess文件中应该有哪些重写规则?

到目前为止,我提出了这个问题:

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

但它会改写任何东西。 提前谢谢。

1 个答案:

答案 0 :(得分: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]