【问题标题】:Create pretty url's with GET variables使用 GET 变量创建漂亮的 url
【发布时间】:2014-09-25 12:34:54
【问题描述】:

此时我有一种情况,漂亮的 url 被重写,以便一切都通过 index.php,同时保持 $_GET 变量。 htaccess 如下所示:

RewriteEngine On
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2&sub=$3&type=$4
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2&sub=$3
RewriteRule ^([^/\.]+)/([^/\.]+)?$ index.php?p=$1&projectid=$2
RewriteRule ^([^/\.]+)/?$ index.php?p=$1

这很好用。但是,我希望它也可以反过来工作。如果有人转到http://www.example.com/index.php?p=page&projectid=123,他们将被重定向到http://www.example.com/page/123

这可能吗?如果可以,怎么做?到目前为止,我所做的只是创建一个重定向循环。

对于那些感兴趣的人,我创建的重定向循环如下所示:

RewriteCond %{QUERY_STRING} ^p=([^&]+)
RewriteRule ^/?index\.php$ http://www.example.com/%1? [L,R=301]

【问题讨论】:

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

我希望它也能以相反的方式工作。如果有人去http://www.example.com/index.php?p=page&projectid=123,他们将被重定向到http://www.example.com/page/123

是的,确实有可能,但您需要为此使用 THE_REQUEST 变量。

RewriteCond %{THE_REQUEST} \s/+index\.php\?p=([^\s&]+)&projectid=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=302,L]

您也可以为其他 URL 建立类似的规则。

【讨论】:

    猜你喜欢
    • 2012-07-20
    • 2013-05-25
    • 2013-02-16
    • 1970-01-01
    • 2015-07-28
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    相关资源
    最近更新 更多