htaccess Mod-rewrite - 从文件名获取查询字符串并转发到php文件

时间:2015-09-07 22:40:46

标签: .htaccess mod-rewrite url-rewriting

我创建了一个不错的PHP脚本。我的数据库中有一个用户头像列表,avatar.php?id = xxx在头部的帮助下将头像输出为图像(" Content-Type:image / jpeg")。

我的头像链接是mywebsite.com/avatar.php?id=1。我想在不同的网站上使用这些头像。但是,在大多数网站中,不允许使用PHP,链接必须以" .jpg"结尾。

所以我想要做的是创建一个ModRewrite规则。

我可以将JPG转换为PHP,但由于查询字符串,它将再次以.jpg结尾。所以我认为将查询字符串放在文件名中可以​​是一个解决方案

基本上我想转发

mywebsite.com/avatar**54**.jpg
mywebsite.com/avatar**17**.jpg

mywebsite.com/avatar.php?id=54
mywebsite.com/avatar.php?id=17

所以我的头像链接将以.jpg结尾但它将调用一个php脚本,该脚本从数据库中获取具有该ID的头像。

我目前在我的htacess文件中也有这个让我隐藏php扩展。

RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(.+)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,QSA,L]

那么如何在不破坏或干扰我当前的重写规则的情况下实现我想做的事情呢?或者甚至可能吗?

编辑1:我尝试了以下但是它没有工作。

RewriteEngine on
RewriteRule ^avatar([^/]*)\.jpg$  /avatar.php?id=$1  [L]

1 个答案:

答案 0 :(得分:0)

我发现答案并在其他人需要的情况下分享

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^avatar([0-9]+)\.jpg$ avatar.php?id=$1 [L,QSA]

这就像一个魅力!