Php .htaccess将普通url重定向到查询字符串

Php .htaccess将普通url重定向到查询字符串,php,.htaccess,url,url-rewriting,rewrite,Php,.htaccess,Url,Url Rewriting,Rewrite,我有一个url的形式: 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处理。有什么建议吗?试试以下方法: Rew

我有一个url的形式:

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处理。有什么建议吗?

试试以下方法:

RewriteRule (.*)/(.*)/(.*)$ path_to_php_files/$1.php?deb=$2&id=$3 [QSA,L,NC]
不幸的是,有了这个规则,第一个$\u GET参数总是deb,我希望您已经正确设置了DirectoryIndex。我不这么认为

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

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

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

通过
httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放入
文档根目录下的
.htaccess

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]

将所有内容传递到自己的脚本中,然后在该PHP脚本中将URI作为一个参数进行处理。这对于您正在运行的Web服务器来说更不特定,而且更灵活。这通常只需要一个或很少的规则。比较:不起作用,因为RewriteRule与起始斜杠不匹配
/
。实际上,如果您注意到OP希望使用两个不同的查询参数以两种不同的方式重定向。感谢您的帮助,我做了一些小的更改,使其起作用,但是现在的问题是它在我的本地主机上工作,但是当我在服务器上传输它时,我正在运行virtualhost,它不工作。您能提供帮助吗?在服务器上确保.htaccess已启用,然后如果.htaccess在DOCUMENT\u根目录中的步调正确。如果一切正常,那么在上面2行中添加
R
标志,以查看服务器上的最终URI。非常感谢:)是否有一些方法可以让我与您保持联系任何社交网站或任何东西?不客气。以下是LinkedIn联系人: