在一个网站上有一个文件夹products/,里面是带有一些大写字符的 php 文件。
示例: www.example.com/products/BIT-Defendar.php
现在这个 url 已经存在多年并且遍布搜索引擎。这是产品经理的错误。
但我想解决这个问题,我只需要小写的 URL。
这会解决我的问题吗? CheckSpelling 开启 CheckCaseOnly 开启 (1)
与上面提到的有什么不同并且:(2)
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1}
如果我使用 (1) 那么所有的工作都会枯萎我请求小写或大写的 url (但我会遇到搜索引擎问题吗?)
如果我使用 (2),我必须将 products/ 文件夹内的所有文件重命名为小写。
----编辑----
当我使用 RewriteRule 时,如果 url 是大写的,我会被转移到域根,如果我使用 CheckSpelling 和 CheckCaseOnly 那么一切都很好。
我用测试了this我得到:
RewriteCond %{REQUEST_URI} [A-Z]
-满足此条件
RewriteRule (.*) ${tolowercase:$1} [R=301,L]
- 符合此规则,新网址为 http://www.example.com/ ${tolowercase:products/BIT-Defendar.php}
- 由于 RewriteRule 选项中的 R,测试已停止。将使用状态代码 301 进行重定向
我在 httpd.conf 中的设置:
<VirtualHost *:80>
RewriteMap tolowercase int:tolower
</VirtualHost>
最佳答案
使用 CheckSpelling 和/或 CheckCaseOnly 指令可能会导致意外结果,如底部所述 here :
1, performance issues
2, some files might be skipped
3, some files might be misinterpreted
我认为允许 apache 为您进行更正是不明智的,因为您依赖 apache 来搜索目录和文件以进行每次查找,而对于小写映射,它可以让您完全控制并创建严格的标准.
我建议添加一个标记 [R=301],它会通知搜索引擎这是新文件,您不会遇到任何与搜索引擎相关的问题:
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1} [R=301,L]
您将不得不重命名您的文件,因为它们将不再被识别,但您可以编写一个简单的脚本来扫描所有文件,并将它们重命名为小写。
关于php - htaccess 大写 URL 到小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651395/
从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b
我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。
我有以下内容:text.gsub(/(lower)(upper)/,'\1\2')我可以将\2替换为大写吗?类似于:sed-e's/\(abc\)/\U\1/'这在Ruby中可行吗? 最佳答案 查看gsub文档:str.gsub(模式){|匹配|block}→new_str在block形式中,当前匹配字符串作为参数传入,$1、$2、$`、$&、$'等变量将被适当设置。block返回的值将替换为每次调用的匹配项。"alowerupperb".gsub(/(lower)(upper)/){|s|$1+""+$2.upcase}
我正在使用Dragonfly在Rails3.1应用程序上处理图像。我正在努力通过url将图像分配给模型。我有一个很好的表格:{:multipart=>true}do|f|%>RemovePicture?Dragonfly的文档指出:Dragonfly提供了一个直接从url分配的访问器:@album.cover_image_url='http://some.url/file.jpg'但是当我在控制台中尝试时:=>#ruby-1.9.2-p290>picture.image_url="http://i.imgur.com/QQiMz.jpg"=>"http://i.imgur.com/QQ