【发布时间】:2011-08-17 10:56:46
【问题描述】:
使用 Apache 和 mod_rewrite 我可以将一个复杂的请求重写为一个简单的文件名,例如:
RewriteRule ^shortcut/(.*)$ /long/way/around/$1
这可以反过来工作吗?我想要一个简单的请求被重写到一个未知的文件,但我可以确定哪个文件应该由一个唯一的 ID 号提供服务,该 ID 号前缀为它的文件名。我希望 Apache 使用正则表达式“猜测”根据 ID 提供哪个文件。
例如:
GET /img/29281.jpg
Directory of /img/:
...
29280-filename-here.jpg
29281-other-filename-here.jpg <-- Apache should serve this one
29282-more-files-here.jpg
...
因此,正则表达式重写可能是:
^(\d+)\.jpg$ --> ^$1\-[a-zA-Z0-9-_]+.jpg$
如何将它集成到 Apache 中(如果可能的话)?
非常感谢您的任何建议。
附:在这种情况下,不能将所有文件名重命名为简单的 ID 号。
【问题讨论】:
-
任何有经验的用户:你觉得这个问题放在另一个网站上会更好吗(想到stackoverflow)?它相当繁重,可能存在于那里?如果是这样,正确交叉发布的程序是什么?
-
@Ellipsis - 我同意 StackOverflow 是这个问题的最佳目的地,我现在把它移到那里;以后,请使用“标记”+“需要版主关注”控件来加快关注您的请求。
-
我认为最好的策略是将
^(\d+)\.jpg$重定向到一个脚本(例如,PHP)并在那里实现“最佳猜测”。
标签: apache mod-rewrite