2010-10-29 127 views
0

我需要这2重写规则帮助:重写规则 - 环重定向

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] 
  • 首先,我需要 “重定向”
    FROM:efectorelativo.net/folder/script.php?A=1 & B = 2
    TO:efectorelativo.net/xyz/1/2

  • 然后我需要 “改写” 未 “重定向”
    FROM:EFEC torelativo.net/xyz/1/2
    TO:efectorelativo.net/folder/script.php?A=1 & B = 2

编辑:(工作码,这要归功于秋葵)

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

叶氏,这将使一个循环。你在问什么? – 2010-10-29 18:29:40

+0

我在问我该如何解决这个问题。 – Luistar15 2010-10-29 19:17:04

回答

1

检查request lineTHE_REQUEST而不是当前的URL:

# 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] 
+0

谢谢,现在正在修复一些小问题。 – Luistar15 2010-10-29 19:17:53