.htaccess在URI中获取请求

时间:2014-03-24 18:18:54

标签: apache .htaccess

我不知道怎么说这个,我无法理解httpd的文档,所以我想知道是否有人知道如何做到这一点。

我想得到

  

www.example.com/v/12345/yadayada.png

实际上去

  

www.example.com/view?key=12345&img=yadayada.png

我已经看到这样做了一些网站,但我不知道如何做到这一点。

由于

编辑1:

我试过了,然后输入了以下网址:

  

www.example.com/v/3f210a2c76cb100f4f7fbd7691a9eb967cb7a1a7/10b78802581bfd59f3fe2b447575bdf7.png

当我这样做时,我收到以下错误:

  

在此服务器上找不到请求的网址/v/3f210a2c76cb100f4f7fbd7691a9eb967cb7a1a7/10b78802581bfd59f3fe2b447575bdf7.png。

这是我目前的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^./]+\.png)$ /i/$1 [L,NC]
RewriteRule ^v/([0-9]+)/([^/.]+\.(png|jpe?g|gif))$ /view.php?k=$1&img=$2 [L]

2 个答案:

答案 0 :(得分:0)

在文档根目录中的htaccess文件中尝试这些规则:

RewriteEngine On
RewriteRule ^v/([0-9a-f]+)/([^/.]+\.(png|jpe?g|gif))$ /view?key=$1&img=$2 [L]

答案 1 :(得分:0)

@JonLin有正确的规则,但你在那之前声明了重写规则,

RewriteRule ^([^./]+\.png)$ /i/$1 [L,NC]

适用于您提供的示例网址。所以,请求

www.example.com/v/3f210/10b7.png

将被重写为

www.example.com/i/v/3f210/10b7.png

值得注意的是用于规则的旗帜

L - Stop the rewriting process immediately and don't apply any more rules
NC - Makes the pattern comparison case-insensitive.

如果要删除该规则,您将获得所需的结果。您还应确定是否需要该规则并对其进行修改,标记和/或重新排列规则的顺序。

RewriteEngine On
RewriteRule ^v/([0-9]+)/([^/.]+\.(png|jpe?g|gif))$ /view.php?k=$1&img=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]