我正在尝试为所有 .html 请求修复其中包含错误字符的旧 URL
我想用破折号 (-) 替换以下实例:
以下已实现,但在服务器上不起作用
我重写了 nginx 使用的 perl 片段如下:
perl_set $old_uri 'sub {
my $r = shift;
my $uri = $r->uri;
$uri = lc $uri;
$uri =~ s/[+, ()\']/-/g;
$uri =~ s/--+/-/g;
return $uri;
}';
这是将所有内容切换为小写,将请求的符号转换为破折号,然后将一行中的多个破折号压缩为一个
Perl 规则是
perl_set $old_uri 'sub {
my $r = shift;
my $uri = $r->uri;
$uri = lc $uri; # Upper to lower
$uri =~ s/[^a-z0-9-.\/]/-/g;
$uri =~ s/--+/-/g; # turn double -- to -
return $uri;
}';
调用它的位置 block 是
location ~ [^a-z0-9-.\/].*.html {
rewrite ^ $old_uri permanent;
}
如果我需要提供更多信息,请告诉我
最佳答案
您可以将任何特殊字符替换为破折号/连字符
$url=~ s/\W+/-/g;
关于regex - Perl 重写旧的 URLS 以对 SEO 友好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31751240/
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
Ruby是否有逐步调试器,类似于Perl的“perl-d”? 最佳答案 ruby-debug(对于ruby1.8),debugger(对于ruby1.9),byebug(对于ruby2.0)以及trepanning系列都有一个-x或--trace选项。在调试器内部,命令setlinetrace将打开或关闭线路跟踪。这是themanualforruby-debug原来的答案已经修改,因为数据噪声文章的链接,唉,不再有效了。还添加了ruby-debug的后继者 关于ruby-Ruby
我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z
我遇到了ruby正则表达式的问题。我需要找到所有(可能重叠的)匹配项。这是问题的简化:#Simpleexample"Hey".scan(/../)=>["He"]#Actualresults#Withoverlappingmatchestheresultshouldbe=>["He"],["ey"]我尝试执行并获得所有结果的正则表达式如下所示:"aaaaaa".scan(/^(..+)\1+$/)#Thislooksformultiplesof(here)"a"biggerthanonethat"fills"theentirestring."aa"*3=>true,"aaa"*2=
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。ImprovethisquestionLinux专家正在转向Mac(10.8)。因为我懒...我使用MacPorts安装MacVim。它似乎安装没有错误。我只需要mvim中的python、ruby和perl支持。$/opt/local/bin/mvim--version|egrep'patches|python|ruby|perl'Includedpatches:1-244,246-646+multi_lang-mzscheme+
多年来,Perl一直是我首选的编程语言工具之一。Perl6语法看起来像是一个很棒的语言特性。我想知道是否有人开始为Ruby做这样的事情。 最佳答案 如果您想在Ruby中使用实际的Perl6语法,最好的选择是Cardinal,Parrot上的ruby编译器。它目前尚未完成并且非常缓慢,但我非常希望它最终成为一个可行的ruby实现。它目前大部分处于非事件状态,等待Parrot中的一些基础架构更改以支持改进的解析速度和其他功能。 关于regex-Ruby是否有类似于Perl6语法的插件
我正在寻找一个正则表达式来从十进制数字中删除尾随零。它应该返回以下结果:0.0002300->0.0002310.002300->10.0023100.0->1001000->10000.0->00->0基本上,如果小数部分为0,它应该删除尾随零和尾随小数点。当它是该值时,它也应该返回0。有什么想法吗?谢谢。 最佳答案 另一种方式["100.0","0.00223000"].map{|x|"%g"%x} 关于RubyRegex舍入尾随零,我们在StackOverflow上找到一个类似的问
在python中,我们可以使用多处理模块。如果Perl和Ruby中有类似的库,你会教它吗?如果您能附上一个简短的示例,我将不胜感激。 最佳答案 ruby:WorkingwithmultipleprocessesinRubyConcurrencyisaMythinRubyPerl:HarnessingthepowerofmulticoreWhyPerlIsaGreatLanguageforConcurrentProgramming此外,Perl的线程是native操作系统线程,因此您可以使用它们来利用多核。
我想将字符串中所有不是字母的字符替换为“#”。我想我需要一个类似于“当此正则表达式不匹配时使用gsub()”的正则表达式。有什么想法吗? 最佳答案 你看,没有正则表达式......str.tr('^A-Za-z','#') 关于RubyRegexGsub不匹配时,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4715384/