Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 需要帮助创建reg ex表达式以使用原始路径和文件名中的信息重写路径和文件名吗_Regex_Url_Mod Rewrite_Url Rewriting - Fatal编程技术网

Regex 需要帮助创建reg ex表达式以使用原始路径和文件名中的信息重写路径和文件名吗

Regex 需要帮助创建reg ex表达式以使用原始路径和文件名中的信息重写路径和文件名吗,regex,url,mod-rewrite,url-rewriting,Regex,Url,Mod Rewrite,Url Rewriting,我希望将指向图像数据库中图像的链接重定向到带水印图像的缓存副本。运行我的站点的脚本程序使用图像所在的子文件夹名称重建带水印的文件名,并附加原始文件名(.jpg),在重建文件名的两个组件的开头各加一个波浪号 例如: 原始文件位于此处: /mainFolder\u files/1/image\u Category/102\u 3456-crop.jpg 新路径应为: /mainFolder\u files/cache/images/~image\u Category~102\u 3456-crop.

我希望将指向图像数据库中图像的链接重定向到带水印图像的缓存副本。运行我的站点的脚本程序使用图像所在的子文件夹名称重建带水印的文件名,并附加原始文件名(.jpg),在重建文件名的两个组件的开头各加一个波浪号

例如: 原始文件位于此处:
/mainFolder\u files/1/image\u Category/102\u 3456-crop.jpg

新路径应为:
/mainFolder\u files/cache/images/~image\u Category~102\u 3456-crop.jpg

图像文件名通常包括下划线、hypens、数字和文本,但始终以.jpg结尾。“image_Category”文件夹可能包含也可能不包含下划线

有人能建议使用reg-ex来捕获原始数据并以修改后的方式重新编写,如图所示吗

这是一个CGI脚本驱动的程序,所以Mod Rewrite语法的帮助也会很有帮助

谢谢,,
Art Minds

通过
httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在
文档根目录下的
.htaccess
中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(ImageFolio4_files)/1/([^/]+)/((?!AM|tn_)[^.]+\.jpg)$ /$1/cache/images/~$2~$3 [L,R=302,NC]

确认其工作正常后,将
R=302
更换为
R=301
。在测试mod_重写规则时,避免使用
R=301
(永久重定向)。

通过
httpd.conf
启用mod_重写和.htaccess,然后将此代码放在
文档根目录下的
.htaccess
中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(ImageFolio4_files)/1/([^/]+)/((?!AM|tn_)[^.]+\.jpg)$ /$1/cache/images/~$2~$3 [L,R=302,NC]

确认其工作正常后,将
R=302
更换为
R=301
。在测试mod_重写规则时,避免使用
R=301
(永久重定向)。

如果您先自己尝试,然后发布您尝试的内容和失败的原因,您将更有可能找到帮助。如果您先自己尝试,然后发布您尝试的内容和失败的原因,你将更有可能找到帮助。非常感谢@anubhava。我不得不做以下修改,但现在它可以完美地工作<代码>^ImageFolio4\u文件/1/([^/]+)/([^.]+\.jpg)$http://www.artminds.com/ImageFolio4_files/cache/images/~$1~$2[L,R=301,NC]
我没有添加
RewriteBase/
你能告诉我添加了什么吗?你好@anubhava。然而,我也发现了另一个问题。除非此重定向排除以tn_uu或AM开头的文件,否则它会中断脚本程序的其他部分。您能建议只在这两个前缀不存在时重定向的代码吗?提前谢谢。你好@anubhava。我尝试了这段代码,它似乎可以排除使用tn_uu或AM的重定向.jpg文件。你能告诉我你觉得有什么问题吗<代码>重写规则^ImageFolio4_文件/1/([^/]+?)(tn|AM)/([^.]+\.jpg)$http://www.artminds.com/ImageFolio4_files/cache/images/~$1~$2[L,R=301,NC]
您的代码仅适用于从AM或tn开始的文件名。我以为你想将它们排除在重定向之外。对不起,我在45分钟前没有看到你的编辑。让我试试。我想把这些前缀排除在重写之外。非常感谢@anubhava。我不得不做以下修改,但现在它可以完美地工作<代码>^ImageFolio4\u文件/1/([^/]+)/([^.]+\.jpg)$http://www.artminds.com/ImageFolio4_files/cache/images/~$1~$2[L,R=301,NC]我没有添加
RewriteBase/
你能告诉我添加了什么吗?你好@anubhava。然而,我也发现了另一个问题。除非此重定向排除以tn_uu或AM开头的文件,否则它会中断脚本程序的其他部分。您能建议只在这两个前缀不存在时重定向的代码吗?提前谢谢。你好@anubhava。我尝试了这段代码,它似乎可以排除使用tn_uu或AM的重定向.jpg文件。你能告诉我你觉得有什么问题吗<代码>重写规则^ImageFolio4_文件/1/([^/]+?)(tn|AM)/([^.]+\.jpg)$http://www.artminds.com/ImageFolio4_files/cache/images/~$1~$2[L,R=301,NC]您的代码仅适用于从AM或tn开始的文件名。我以为你想将它们排除在重定向之外。对不起,我在45分钟前没有看到你的编辑。让我试试。我确实想从重写中排除这些前缀。