【问题标题】:Dynamic link to static link?动态链接到静态链接?
【发布时间】:2013-08-21 23:17:44
【问题描述】:

在stackoverflow中,页面url就像 How to store post variables value

但是当我们使用 php 创建网页时,它很可能有一个类似的 url www,somewebsite.com/mypage?someid=123

然后显示内容。

我想知道如何转换 www.somewebsite.com/mypage?someid=123

进入 www.somewebsite.com/mypage/some_page_link_here_which_is_static

有人知道怎么做吗?我尝试先搜索这个问题,但它显示了 c/c++/java 链接:|

编辑:

我尝试了一些 youtube 视频,我的 HTACESS 代码是
重写引擎开启
RewriteCond %(REQUEST_URI) find/([0-9]+)/
RewriteRule find(.*)/ /find.php?id=$1

这会变成一些类似的网址
某事/find.php?id=11 进入
某事/发现/11

.htaccess 文件位于我网站的根目录中。但它仍然失败。 我是不是做错了什么?

【问题讨论】:

    标签: php get dynamic-pages static-pages


    【解决方案1】:

    它被称为 url 重写。对于 apache web 服务器,您可以使用 mod_rewrite 扩展来实现这一点。通常开发人员使用.htaccess 文件来为该模块提供配置指令。

    执行 url 重写的简单 .htaccess 条目如下所示,它将流量发送到 / 一个名为 someother.html 的文件。

    RewriteEngine on
    RewriteRule ^$ /someother.html
    

    框架进行路由的最常见方式之一是将进入 Web 应用程序的所有流量路由到控制器。然后分析REQUEST_URI并在php中进行路由。与必须在 .htaccess 文件上静态提供每个规则相比,这提供了更动态地执行路由。

    【讨论】:

      【解决方案2】:

      尝试搜索“使用 htaccess 更改 url”。

      编辑您的 .htaccess 文件:

      RewriteRule ^mypage/(A-Za-z0-9_+]) page.php?post_uri=$1
      

      【讨论】:

        【解决方案3】:

        许多 CMS 和 Web 编程框架支持实现此类用户(和搜索引擎)友好链接。

        在最低级别,您可以使用所有服务器上的 URL 重写功能。

        如果您使用 Apache 服务器,则必须编辑 .htaccess 文件;对于 IIS(Windows 服务器)web.config 文件。

        Google for url rewrite apache 或 url rewrite IIS。

        更新: 例如,请参阅此解决方案(借自 CodeIgniter)。你当然可以用任何你想要的替换 index.php、图片等。

        RewriteEngine on
        RewriteCond $1 !^(index\.php|images|robots\.txt)
        RewriteRule ^(.*)$ /index.php/$1 [L]
        

        更新 2 - 说明

        至于更深入的解释,我发现了这个关于该主题的优秀介绍/教程:URL Rewriting for Beginners

        希望这比上面无法解释的例子更有意义:)

        【讨论】:

        • 我完全同意你的观点,它需要更多的解释......所以我做了一些搜索,找到了关于这个主题的优秀教程;添加到答案的链接。
        【解决方案4】:

        http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

        例如

        www.somewebsite.com/mypage/dynamic-link-to-static-link

        .htaccess 部分

        RewriteRule ^mypage/(A-Za-z0-9_+]) page.php?post_uri=$1 [QSA]

        page.php 部分

        $post_uri = $mysqli->real_escape_string($_GET['post_uri']);

        //然后可以通过变量$post_uri找出行

        RewriteEngine on
        RewriteCond %{REQUEST_URI} find/([0-9]+)$
        RewriteRule  /find.php?id=$1
        

        试试这个 %(REQUEST_URI) => %{REQUEST_URI}

        【讨论】:

          猜你喜欢
          • 2010-12-31
          • 2020-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-01
          • 1970-01-01
          相关资源
          最近更新 更多