我的代码的第一部分工作并重定向/重写为new/file
。当我尝试传递变量时出现问题。它们全部被重定向到new/file
我尝试将file.php?foo=bar
重定向传递给new/file
而不是new/file/bar
的变量。
例如:
我的代码:
RewriteBase /domain.com
#regular
RewriteCond %{QUERY_STRING} !redirect=no
RewriteRule ^file\.php$ new/file? [NS,R=301,L]
RewriteRule ^new/file?$ file.php?redirect=no [NS]
#with variable
RewriteCond %{QUERY_STRING} ^page=([0-9-]+)/?$
RewriteRule ^file\.php$ new/file/%1? [NS,R=301,L]
RewriteRule ^new/file/([0-9-]+)/?$ file.php?page=$1&redirect=no [NS]
请注意,我传递的不仅仅是page
个变量。
我想也许 QSA旗帜应该去某个地方?
答案 0 :(得分:1)
RewriteCond %{QUERY_STRING} !redirect=no
RewriteRule ^file\.php$ new/file [NS,R=301,L]
RewriteRule ^new/file$ file.php?redirect=no [NS]
在第2行你有吗?这将替换当前的查询字符串,并且页面= 2将丢失。
在第3行你有一个?路径不包含问号。其次,问号被解释为“可选字母'e'”,因为它是一个RegEx。所以“/ new / fil”也可以(尝试一下)。