【问题标题】:How to direct multiple clean URL paths to a single page?如何将多个干净的 URL 路径定向到单个页面?
【发布时间】:2013-07-26 14:42:44
【问题描述】:

(嗨!这是我在这里找到答案多年后第一次在 Stack Overflow 上提问......谢谢!)

我有一个动态页面,我希望有指向该页面不同状态的固定 URL。因此,例如:“www.mypage.co”(/index.php) 是基本页面,它根据用户选择重新排列其内容。然后,我希望能够指向“www.mypage.co/contentA”或“www.mypage.co/contentB”,以便在“www.mypage.co”处自动加载所需内容的页面.

本质上,问题是审美问题。我知道我可以简单地编写 www.mypage.co/index.html?state=contentA 来达到预期的目的,但我想保持 URL 简单易读(即干净)。此外,由于我的托管关系的限制,如果可能的话,我非常希望有一个独立于服务器的解决方案(至少跨 LAM[PHP] 堆栈)。

另外,如果我只是对如何实现干净的 URL 有不正确的假设,我希望能得到一个好的、全面的解释。好像没找到……

【问题讨论】:

    标签: clean-urls


    【解决方案1】:

    您可以使用 htaccess 文件将所有请求重定向到一个位置,然后从那里确定要返回给客户端的内容。查看Tonic 使用的htaccess/dispatch system

    【讨论】:

      【解决方案2】:

      如果你使用 Apache,你可以使用mod_rewrite。我有一个这样的规则,多个restful url都转到同一个页面,使用正则表达式并将旧url的部分移动到新url的参数中:

      RewriteRule ^/testapp/(name|number|rn|sid|unii|inchikey|formula)(/(startswith))?/?(.*) /testapp/ProxyServlet?objectHandle=Search&actionHandle=drillIn&searchtype=$1&searchterm=$4&startswith=$3 [NC,PT]
      

      那个特定的正则表达式接受类似的网址

      • testapp/名称
      • testapp/name/zuchini
      • testapp/name/startswith/zuchini

      并将它们转发到同一页面。

      我也将UrlRewriteFilter 用于Tomcat,但正如你提到的PHP,这似乎没有用。

      【讨论】:

      • 这很好,但我不确定是否可以在我的服务器实现中添加/删除模块。如果他们使用 mod_rewrite 编译并且安全规则允许我将指令写入我的 .htaccess 中,这可能会起作用。
      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2014-02-02
      • 1970-01-01
      相关资源
      最近更新 更多