Web服务器如何“忽略”URI组件?

时间:2011-07-16 16:08:55

标签: php asp.net

例如,加载以下链接只需重新加载页面并删除无关的扩展名:


http://stackoverflow.com/questions/6718602/how-does-stackoverflow-and-other-sites-remove-file-extensions-for-webpages.abc123

5 个答案:

答案 0 :(得分:3)

有很多方法可以实现,但是既然你已经在ASP.Net上标记了它,我将仅为ASP.Net提供具体的方法。

  1. Classic ASP.Net - 使用HttpModule重写网址: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
  2. ASP.Net MVC - 这是为了保持更清晰的URL而设计的 提供定义routes的机制: http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx
  3. 希望这有帮助。

    更新:在PHP中,我认为您使用mod_rewrite apache模块和.htaccess来定义规则:http://www.cyberdesignz.com/blog/website-design/url-rewriting-top-5-ways-of-php-url-rewriting/

答案 1 :(得分:1)

如果我没记错,StackOverflow使用ASP.Net MVC。路由是ASP.Net MVC的一个组成部分 - here's a quick overview

答案 2 :(得分:0)

在apache服务器上,你需要一个.htaccess谷歌搜索将会产生一些很好的教程。

答案 3 :(得分:0)

使用Apache:

RewriteEngine On
RewriteBase   /the_directory

RewriteRule  ^(.*).abc123$ $1.php [R=301]

如果您无权访问apache配置,只需将其添加到名为 .htaccess 的文件中

答案 4 :(得分:0)

URI只是一个字符串.....我不知道具体如何构建stackoverflow,但许多Web服务器不再使用目录和文件结构 - 但是将http请求路由到基于URI的资源使用有效解码字符串的代码。我怀疑6718602是页面URI中唯一重要的东西,它会加载相应的问题。