【问题标题】:URL rewrite with ?lang= parameter使用 ?lang= 参数重写 URL
【发布时间】:2010-03-23 02:22:18
【问题描述】:

我的开发人员说无法重写 url 表单 example.com/name/name/?lang=english 到 example.com/en/name/name/

有没有可能? 如果是,应该怎么做? 如果不是,可能是什么原因?

我们有来自 maddogdomains (godaddy) 的基于 Windows 的主机

【问题讨论】:

  • 有可能。但是您真的要将/foo/bar/?lang=english 的请求重写为/en/foo/bar/ 还是相反?
  • 绝对有可能。您需要一个重写规则,将 example.com/en/name/name/ 类型的所有请求转换为 example.com/name/name/?lang=english。因此,当用户看到更友好的 url 时,源代码会收到带有查询字符串的 url。

标签: url mod-rewrite parameters


【解决方案1】:

您不能“重写”URL,因为用户仍会看到 ?lang 参数。但是,您可以重定向到没有该参数的页面。

他可以检查查询字符串,剥离查询字符串,并在没有任何查询字符串参数的情况下重定向到页面。这应该很容易做到。

但是,请记住,用户被“重定向”到同一页面,因此页面加载速度会变慢,因为它会加载两次。

【讨论】:

    【解决方案2】:

    此功能自 .NET 2.0 版起就已包含在 .NET 中。让你的程序员看看微软的URL Rewriting in ASP.NET。也可以通过 IIS (URL Rewrite) 完成,但您的主机可能不支持。

    您的程序员可能还想查看路由 (ASP.NET MVC Routing Overview (C#))。路由被 MVC 使用,但不限于 MVC。 ASP.NET 应用程序也可以使用它。

    【讨论】:

      【解决方案3】:

      如果您的主机启用了 mod_rewrite,您当然可以使用它。这是一个教程:http://articles.sitepoint.com/article/guide-url-rewriting

      【讨论】:

        【解决方案4】:

        您的开发人员可能错了。 Microsoft IIS 的 URL 重写模块可以完全满足您的要求。快速查看主机的包无法显示是否启用了此类模块。也许你应该给他们的支持部门发邮件问问。如果它不可用,更改为不同的网络主机相当容易;有很多好的托管公司。

        另一个选项是在您的应用程序中处理 URL 重定向。具体如何实现这取决于它所使用的语言和可能的框架,以及这些工具如何将 URL 映射到代码。

        当开发人员告诉您某事不可能时,您通常应该持怀疑态度。几乎总有办法。这并不是说它总是实用的。优秀的开发人员可以解释在速度、开发时间和可维护性方面的权衡,并让您做出决定。

        【讨论】:

        • 感谢您的回答。好的,托管条件已更改。现在我们有了带有 IIS7 的基于 Windows 的服务器,带有 url 重写插件和 PHP 框架。这次重写的规则是什么?
        • @agorom7 - 当您的应用程序是用 PHP 编写时托管在 Windows/IIS 上是一个不寻常的选择,并且可能会让您的生活更加困难。 Apache 是托管 PHP 的更常见选择,并且几乎总是启用 URL 重写。也就是说,可以在此处找到指向该插件的教程和文档的链接:learn.iis.net/page.aspx/664/using-url-rewrite-module-20
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 2013-08-30
        • 2017-05-28
        • 2016-07-29
        • 2011-12-15
        • 1970-01-01
        相关资源
        最近更新 更多