【问题标题】:.htaccess, mod_rewrite, regex with directory and filetype.htaccess、mod_rewrite、带有目录和文件类型的正则表达式
【发布时间】:2011-11-09 04:45:31
【问题描述】:

我想在以下条件下进行重写:

  1. 目录是 /images
  2. 文件具有 .jpg、.png 或 .gif 扩展名

我想重定向到以下

/images/?file=filename.extension

这不起作用:

RewriteRule /images/(.*\.jpg|png|gif) /images/?file=$1

例子:

/images/example.jpg => /images/?file=example.jpg

谢谢

【问题讨论】:

  • rubular.com or gskinner.com/RegExr or ... ,总是测试你的正则表达式
  • 我刚刚在 rubular 中检查了它,它说要避开正斜杠,但即使匹配和捕获是正确的,它也无济于事。

标签: regex .htaccess mod-rewrite


【解决方案1】:

我认为您需要括号来对扩展进行分组。

/images/(.*\.(jpg|png|gif))

【讨论】:

【解决方案2】:

在 .htaccess 文件中,路径被去掉了前导斜杠,因此您需要以 images/ 而不是 /images/ 开头。此外,您可以以^ 开头以匹配路径的开头,这样/blahblah/images/something.gif 之类的路径就不会被重写。最后,您的括号将匹配foo.jpg,但不匹配foo.pngfoo.gif。试试这个:

RewriteRule ^images/(.+\.(jpg|png|gif)) /images/?file=$1

【讨论】:

  • 前导斜杠在 Directory 或 htaccess 上下文中被删除,而不是在 VirtualHost 上下文中。
  • 这个 .htaccess 文件在您的文档根目录中是否位于“images”目录中?实际上,检查我的编辑,删除了目标中的前导斜杠。
  • 文档根目录中的 .htaccess 文件。 images 目录是 virtualhost 中设置的别名。这有关系吗?
  • 不,如果它在文档根目录中,那么应该没问题。它在我的.htaccess 中工作。你遇到了什么错误?
  • 这是在创建某种循环吗?它重定向到的文件也适合正则表达式。有没有办法修改它,使文件名不能以问号开头?
猜你喜欢
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 2014-08-31
相关资源
最近更新 更多