相关疑难解决方法(0)

Stack Overflow如何生成其SEO友好的URL?

什么是完整的正则表达式或其他一些可以获得标题的过程:

如何将标题更改为Stack Overflow等URL的一部分?

把它变成

how-do-you-change-a-title-to-be-part-of-the-url-like-stack-overflow
Run Code Online (Sandbox Code Playgroud)

Stack Overflow上的SEO友好URL中使用了哪些?

我使用的开发环境是Ruby on Rails,但是如果还有其他一些特定于平台的解决方案(.NET,PHP,Django),我也很乐意看到它们.

我相信我(或其他读者)会在不同的平台上遇到同样的问题.

我正在使用自定义路由,我主要想知道如何更改字符串以删除所有特殊字符,它全部小写,并且所有空格都被替换.

regex language-agnostic seo friendly-url slug

245
推荐指数
7
解决办法
4万
查看次数

将标题转换为虚线URL友好字符串

我想编写一个C#方法,将任何标题转换为URL友好字符串,类似于stackoverflow的作用:

  • 用破折号替换空格
  • 删除括号
  • 等等

我正在考虑按照RFC 3986标准(来自维基百科)删除保留字符,但我不知道这是否足够?它会使链接可行,但有没有人知道堆栈溢出这里有什么其他字符被替换?我不希望在我的网址中以%-s结尾...

目前的实施

string result = Regex.Replace(value.Trim(), @"[!*'""`();:@&+=$,/\\?%#\[\]<>«»{}_]");
return Regex.Replace(result.Trim(), @"[\s*[\-–—\s]\s*]", "-");
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 我应该删除哪些字符?
  2. 我应该限制结果字符串的最大长度吗?
  3. 任何人都知道哪些规则适用于SO上的标题?

一个子问题
我是否应该将此问题转移到元,即使它与编程相关?

c# replace

19
推荐指数
1
解决办法
9894
查看次数

ASP.NET MVC"有潜在危险的Request.Path",带有效URL

在我的生产ASP.NET MVC 3站点上,我注意到偶尔会出现"从客户端检测到一个潜在危险的Request.Path值(%)".Windows应用程序日志中的未处理异常.

虽然这些在常规站点使用(即/随机web机器人)下完全有效,但许多请求似乎来自有效的本地ISP用户.

在例外的请求详细信息中,请求URL与请求路径不同:

请求URL:http://www.somesite.com/Images/Image With Space.jpg

请求路径:/Images/Imagehttp://www.somesite.com/Images/Image With Space.jpgWithhttp://www.somesite.com/Images/Image With Space.jpgSpace.jpg

请注意,在"请求路径"中,路径中存在"空格"的任何位置都会替换为请求URL的精确副本!

在网站内,实际链接如下所示:

<img src="/Images/Image%20With%20Space.jpg" />
Run Code Online (Sandbox Code Playgroud)

知道可能导致这种情况的原因吗?我试着查看Request.Path和Request.Url的文档,但我无法弄清楚为什么它们会有所不同.直接命中请求URL会正确显示资源.

更新:我设法通过使用IIS 7.0的失败请求跟踪功能来查看其中一个故障请求:

推荐人:谷歌搜索

用户代理:Mozilla/5.0(iPad; CPU OS 5_1_1,如Mac OS X)AppleWebKit/534.46(KHTML,如Gecko)版本/ 5.1 Mobile/9B206 Safari/7534.48.3

RequestURL:http://www.somesite.com:80/Images/Image%20With%20Space.jpg

手动将URL键入我的iOS 5.1.1会正确显示图像.在Google图像中搜索图像会正确显示图像.仍然没有成功的复制.

在路径的中途,我看到:

MODULE_SET_RESPONSE_ERROR_STATUS警告.ModuleName ="RequestFilteringModule",Notification ="BEGIN_REQUEST",HttpStatus ="404",HttpReason ="Not Found",HttpSubStatus ="11",

根据IIS的文档,来自请求过滤模块的404.11是URL中的"双重编码"错误.尝试一下,如果我有目的地创建一个双重编码的URL,如http://www.somesite.com/Images/Image%2520With%2520Space.jpg,我会在事件日志中得到确切的错误,并填写格式错误的请求路径.

事件日志错误中格式错误的请求路径似乎是ASP.NET 4.0中的错误.

但是,它没有解释为什么我首先得到错误.我检查了大量失败的请求日志 - 唯一的常见因素是他们都在使用AppleWebKit.它可能是Safari中的一个错误吗?

iis-7 asp.net-mvc-3 requestfiltering

5
推荐指数
1
解决办法
5052
查看次数