2014-03-24 52 views
0

我不知道我会怎么说这个,我无法理解httpd的文档,所以我想知道是否有人知道如何做到这一点。.htaccess在URI中获取请求

我想获得

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

真正去

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

我已经看到了这个做了一些网站,但我不能找出如何做到这一点。

感谢

编辑1:

我想这一点,然后进入以下网址:

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

当我这样做,我得到了以下错误:

The requested URL /v/3f210a2c76cb100f4f7fbd7691a9eb967cb7a1a7/10b78802581bfd59f3fe2b447575bdf7.png was not found on this server.

这是我当前的.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] 

回答

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] 
0

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

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

后期编辑以添加(格式化) – user2619443

+0

@ user2619443目前尚不清楚的是,“重点”部分还可以包含字母,看到上面的编辑 –