我想帮助使用正则表达式将一个丑陋的网址(http://example.com/image.php?id=1&name=Dog)重写为一个漂亮的网址(http://example.com/1/Dog)。
关于此版本的反向版本以及我需要的其他版本有很多问题。但是,它们不起作用。
RewriteRule ^image.php\?id=(.*)&name=(.*)$ http://example.com/$1/$2? [R=301,L]
这是我提出的正则表达式。在Regex101上测试似乎没问题(?)https://regex101.com/r/uUlccx/2
它应该与此相反:
RewriteRule ^([^/]*)/([^/]*)$ /image.php?id=$1&name=$2 [L]
但似乎并非如此。任何人都知道RewriteRule应该如何?
编辑:http://htaccess.mwl.be?share=47b41b23-1752-5a26-8432-196c95d1d669 htaccess测试员
编辑2:我有点进一步,但它似乎仍然没有完全发挥作用。第二个变量不会被重写:
RewriteCond %{QUERY_STRING} ^(.*&)?id=(.*)&name=(.*)$
RewriteRule ^image\.php$ http://example.com/%1/%2/? [R=301,L]
答案 0 :(得分:2)
RewriteCond %{QUERY_STRING} ^id=(.*)&name=(.*)$
RewriteRule ^image\.php$ http://example.com/%1/%2/? [R=301,L]
这似乎是解决方案。在正常的重写规则中找不到查询值?