【问题标题】:URL rewriting and get parametersURL重写和获取参数
【发布时间】:2014-09-17 10:55:36
【问题描述】:

我目前正在构建一个网站,其中页面内容来自数据库。

为了构建我的 SQL 语句,我使用了 URL 中的参数,直到现在一切正常。

现在我想重写 URL 以获得干净的 URL,所以默认情况下我的 URL 看起来像:

lunettes-collection.php?supplier=all&type=vue

我写了一个规则来像这样转换这个 URL

lunettes-collection-vue.html

但是现在当我到达这个网址时,我显然无法获得参数type=vue

处理这种情况的最佳做法是什么?

【问题讨论】:

    标签: php .htaccess url-rewriting


    【解决方案1】:

    使用 .htaccess 你可以做到这一点

    # Turn Rewrite Engine On
    RewriteEngine on
    
    #Rewrite lunettes-collection.php?supplier=all&type=vue to 
    #lunettes-collection/all/vue
    RewriteRule ^lunettes-collection/([a-zA-Z]+)/([a-zA-Z]+) lunettes-collection.php?supplier=$1&type=$2 [NC,L]
    

    请记住,如果您想启用数字添加额外的 0-9 部分,URL 将仅支持 a-z 和 A-Z 的字母

    【讨论】:

    • 这只是重写我的网址,我不需要重写我的网址我需要检索网址中不再存在的参数。
    • @user1628610 然后使用 $_GET
    • 这就是问题所在,当我将 $_GET 与新 URL lunettes-collection-vue.html 一起使用时,该值未定义,因为我的 URL 中没有更多参数。
    【解决方案2】:

    重写不会是这样的结果。

    $_GET 将得到普通变量。

    请出示你的重写规则。

    我试了一下 Nginx 规则是这样正常工作的。

    rewrite ^/lunettes-collection-vue.html$ /lunettes-collection.php?supplier=all&type=vue last;
    

    【讨论】:

    • 这里是我的 .htaccess Options +FollowSymlinks RewriteEngine on RewriteRule ^lunettes-collection-([a-z]+)\.html$ lunettes-collection.php?supplier=all&type=$1 [L] 的内容。我不明白你的意思。如何从 lunettes-collection-vue.html 之类的 URL 中检索参数 id 参数未出现在 URL 上?
    猜你喜欢
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多