【发布时间】: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]
【问题讨论】:
-
查看现有的路由器解决方案(ZF、SF 等)。
-
@fejese:你能给我一个链接吗?我以前从未听说过。
标签: php regex apache .htaccess mod-rewrite