我试图弄清楚这段代码为什么不起作用
旧网址
news.php?catID=text-from-database&nid=number-from-database
新网址
news-detail.php?cid=Cat-ID-Number&nid=number-from-database
或新网址
domain.com/number-from-database
我想使用下面的代码永久重定向。但它没有用。
Redirect 301 ^news.php?catID=([A-Za-z0-9-]+)&nid=([0-9]+) news-detail.php?cid=$1&nid=$2
Redirect 301 ^news.php?catID=([A-Za-z0-9-]+)&nid=([0-9]+) /$1
答案 0 :(得分:1)
您无法与REDIRECT指令中的查询字符串进行匹配。您需要使用Mod-rewrite匹配%{QUERY_STRING}
或%{THE_REQUEST}
变量:
尝试:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^catID=([A-Za-z0-9-]+)&nid=([0-9]+)$ [NC]
RewriteRule ^ /news-detail.php?cid=%1&nid=%2 [L,R]
或:
RewriteEngine on
RewriteCond %{THE_REQUEST} /news\.php\?catID=([A-Za-z0-9-]+)&nid=([0-9]+) [NC]
RewriteRule ^ /news-detail.php?cid=%2 [L,R]