我需要帮助这两条重写规则:
RewriteEngine On
RewriteBase /
# folder/script.php?A=1&B=2 -> xyz/1/2 (REDIRECT)
RewriteCond %{QUERY_STRING} ^A=([^&]+)&B=([^&]+)$
RewriteRule ^folder\/script\.php$ /xyz/%1/%2? [R=301,L]
# xyz/1/2 -> folder/script.php?A=1&B=2 (REWRITE)
RewriteRule ^xyz\/([^\/]+)\/([^\/]+)$ /folder/script.php?A=$1&B=$2 [L]
首先,我需要“重新审视”
来自:efectorelativo.net/folder/script.php?A=1&B=2
TO:efectorelativo.net/xyz/1/2
然后我需要“REWRITE”而不是“REDIRECT”
来自:efectorelativo.net/xyz/1/2
TO:efectorelativo.net/folder/script.php?A=1&B=2
编辑:(工作代码,感谢Gumbo)
RewriteEngine On
RewriteBase /
# folder/script.php?A=1&B=2 -> xyz/1/2 (REDIRECT)
RewriteCond %{THE_REQUEST} \?A=([^&]+)&B=([^\s&]+)
RewriteRule ^folder\/script\.php$ /xyz/%1/%2? [R=301,L]
# xyz/1/2 -> folder/script.php?A=1&B=2 (REWRITE)
RewriteRule ^xyz\/([^\/]+)\/([^\/]+)$ /folder/script.php?A=$1&B=$2 [L]
答案 0 :(得分:1)
检查 THE_REQUEST 中的request line,而不是当前网址:
# folder/script.php?A=1&B=2 -> xyz/1/2 (REDIRECT)
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /[^?\ ]*\?A=([^&]+)&B=([^&\ ]+)\
RewriteRule ^folder/script\.php$ /xyz/%1/%2? [R=301,L]