“Apache别名”;“最佳猜测”;文件名
使用Apache和mod_rewrite,我可以将复杂的请求重写为简单的文件名,例如:“Apache别名”;“最佳猜测”;文件名,apache,mod-rewrite,Apache,Mod Rewrite,使用Apache和mod_rewrite,我可以将复杂的请求重写为简单的文件名,例如: RewriteRule ^shortcut/(.*)$ /long/way/around/$1 这能反过来吗?我希望一个简单的请求被重写为一个未知的文件,但我可以确定哪个文件应该由一个唯一的ID号作为前缀提供给它的文件名。我希望Apache使用正则表达式根据ID“猜测”要为哪个文件提供服务 例如: GET /img/29281.jpg Directory of /img/: ... 29280-filen
RewriteRule ^shortcut/(.*)$ /long/way/around/$1
这能反过来吗?我希望一个简单的请求被重写为一个未知的文件,但我可以确定哪个文件应该由一个唯一的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
...
如何将其集成到Apache中(如果可能的话)
非常感谢你的建议
另外,在这种情况下,将所有文件名重命名为简单ID号不是一个选项 您可以使用PHP脚本作为404页面的错误文档。
这个脚本将找到所需的文件,并向所需的文件发送重定向。我认为apache的一种方法是使用mod rewrite命令,并使用rewritemap的:prg映射 这将在apache启动时加载一个简单的程序(可能是文档中建议的perl程序,PHP程序可能会遇到更多的内存泄漏和性能问题,IMHO)。这个程序将不得不做文件名猜测的最后一部分 您可以找到一些此类程序的示例
我的大脑中没有足够的perl功能来获取提取实际文件名的perl方法(使用扩展名和int标识符),但这应该是简单和简短的(这对于PRG重写图很重要)。任何有经验的用户:您觉得这个问题最好放在另一个站点上(想到stackoverflow)吗?它相当繁重,可能存在于那里?如果是这样的话,正确跨越帖子的步骤是什么?@省略号-我同意StackOverflow是这个问题的最佳目的地,我现在把它移到那里;将来,请使用“flag”+“needs-moderator attention”控件加快对您的请求的关注。我认为最好的策略是将
^(\d+)\.jpg$
重定向到脚本(例如PHP),并在那里实现“best guess”。听起来Apache没有这种内置的,所以这看起来是最有力的方法;尽管Creadiff的404解决方案是一个很好的解决方案。
^(\d+)\.jpg$ --> ^$1\-[a-zA-Z0-9-_]+.jpg$