Apache mod_rewrite和正则表达式

时间:2012-09-04 06:32:13

标签: php regex .htaccess mod-rewrite

在我的HTML中,我想引用我的图像:

/images/articles/this-is-the-page-title-dgj4klci5j4.jpg
/images/articles/thumbs/this-is-the-page-title-dgj4klci5j4.jpg
/images/gallery/this-is-the-page-title-qj3k56l6kfm.jpg

但它们确实位于:

/_pics/articles/dgj4klci5j4.jpg
/_pics/articles/thumbs/dgj4klci5j4.jpg
/_pics/gallery/qj3k56l6kfm.jpg

我的.htaccess文件当前位于网站的根目录中,如下所示:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^website\.com [NC]
RewriteRule ^(.*)$ http://www.website.com/$1 [R=permanent,L]

RewriteRule ^articles/ user/articles.php [L]
RewriteRule ^gallery/ info/gallery.php [L]

我必须这样做,因为在最后一刻,客户决定他想要更清晰的图像文件名,这似乎是一个快速合理的修复。

我想我可以将所有内容从/ images重定向到/ _pics并通过使用mod_rewrite取出页面标题。问题是我对正则表达式不是很好,我不完全理解mod_rewrite的工作方式。我可以得到一些帮助吗?感谢

真实图像文件名只包含字母和数字,可以是jpg或png。

1 个答案:

答案 0 :(得分:2)

尝试在htaccess文件中添加此规则:

RewriteRule ^images/(.+)/[^/]+-([^/-]+)\.(jpe?g|gif|png)$ /_pics/$1/$2.$3 [L]