使用.htaccess将新旧URL重写到同一页面

使用.htaccess将新旧URL重写到同一页面,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,当前有一个包含URL/results details.php?mls_number=StringOfNumber的页面 我希望它重新写入:/results details/stringofnumbers 然而,我想基本上解决回到原来的页面 我还在内部更改站点上的所有URL以指向该URL。所以我有两条重写规则: RewriteCond %{QUERY_STRING} mls_number=([0-9]+)$ RewriteRule (.*) /new-homes/results-details/%

当前有一个包含URL/results details.php?mls_number=StringOfNumber的页面

我希望它重新写入:/results details/stringofnumbers

然而,我想基本上解决回到原来的页面

我还在内部更改站点上的所有URL以指向该URL。所以我有两条重写规则:

RewriteCond %{QUERY_STRING} mls_number=([0-9]+)$
RewriteRule (.*) /new-homes/results-details/%1? [R=301,C]
RewriteRule ^results-details/([0-9]+)$ results-details.php?mls_number=$1
第二条规则在/results details/stringofnumbers表单中的内部链接上运行良好,但第一条规则与第二条规则没有正确链接,并且不确定我做错了什么

基本上,尝试保留所有可能存在的旧URL链接,但开始在内部使用新URS


建议?

您需要匹配实际请求,而不是URI,因为重写引擎循环:

RewriteCond %{THE_REQUEST} \ /new-homes/results-details\.php?mls_number=([0-9]+)
RewriteRule ^ /new-homes/results-details/%1? [L,R=301]

RewriteRule ^results-details/([0-9]+)$ results-details.php?mls_number=$1

尝试过这个,但似乎没有任何效果。不确定它是否无法匹配或无法重新写入URL或只是循环。