.htaccess将普通网址重定向到查询字符串

时间:2012-08-28 07:42:04

标签: php .htaccess url url-rewriting rewrite

我有一个形式的网址:

www.example.com/r/abc/1234

我想重写为:

www.example.com/r.php?deb=abc&id=1234

另一个网址:

www.example.com/r/12bcd-qsqs-343-wdwd/1234

应该改写为:

www.example.com/r.php?abc_id=12bcd-qsqs-343-wdwd&id=1234

这两条规则都应该由.htaccess处理。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

尝试类似:

RewriteRule (.*)/(.*)/(.*)$ path_to_php_files/$1.php?deb=$2&id=$3 [QSA,L,NC]

不幸的是,使用此规则,您将第一个$ _GET参数始终为deb,并且我希望您能够正确设置DirectoryIndex。

我不认为
www.example.com/r/abc/1234
www.example.com/r/12bcd-qsqs-343-wdwd/1234

如果你有动态链接,你可以将abc和12bcd-qsqs-343-wdwd传递给2个不同的$ _GET参数。

答案 1 :(得分:1)

您要重定向的URI看起来都相似,只是第二个在第一个查询参数中有连字符-

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^r/([^-]+)/(.+)/?$ r.php?deb=$1&id=$2 [L,QSA]

RewriteRule ^r/([a-z0-9-]+)/(.+)/?$ r.php?abc_id=$1&id=$2 [L,QSA,NC]