.htaccess 基于查询值(值范围)的htaccess重定向

.htaccess 基于查询值(值范围)的htaccess重定向,.htaccess,redirect,.htaccess,Redirect,我试图将一组页面从一个域重定向到另一个域(不是所有页面,只是其中的一部分) 页面的URL为domain.com/?p=ID ID总是一个数字 我想将ID低于2000的所有页面重定向到一个新域,比如domain2.com/?=ID 我怎么做?我可能不得不使用正则表达式模式,但对于正则表达式,我不是那么精明 谢谢 罗伊也许可以使用正则表达式,但正则表达式并不真正适合这样的范围。另一种方法是在Apache配置中使用重写映射,如下所示: RewriteMap examplemap txt:/path/t

我试图将一组页面从一个域重定向到另一个域(不是所有页面,只是其中的一部分)

页面的URL为domain.com/?p=ID

ID总是一个数字

我想将ID低于2000的所有页面重定向到一个新域,比如domain2.com/?=ID

我怎么做?我可能不得不使用正则表达式模式,但对于正则表达式,我不是那么精明

谢谢


罗伊

也许可以使用正则表达式,但正则表达式并不真正适合这样的范围。另一种方法是在Apache配置中使用重写映射,如下所示:

RewriteMap examplemap txt:/path/to/file/map.txt
RewriteRule ^/?p=(.*) ${examplemap:$1|/?p=$1}
然后,您的
/path/to/file/map.txt文件将包含以下内容:

1 http://domain2.com/?p=1
2 http://domain2.com/?p=2
3 http://domain2.com/?p=3
.
.
2000 http://domain2.com/?p=2000
如果在映射文件中找不到该条目,则该条目应默认为现有域,因为重写规则中管道后面的零件。这可能看起来有些过分,但它为您提供了对每个重定向的最佳控制级别


上面的代码还没有经过测试,但希望它能解释原理。有关使用RewriteMap的更多信息,请参阅

考虑到相似URL的数量,RewriteMap在这里是非常糟糕的方法。。。最好是在实际的脚本中(index.hp,不管他有什么)。我同意RewriteMap似乎不是一个很好的方法,但我认为它比使用正则表达式要好,因为正则表达式会变得混乱和难以理解。如果你有权限的话,在应用程序中编写自定义代码可能是一个更好的方法。我可以访问脚本,通过在我的站点头文件中的几行PHP代码处理重定向来解决它。感谢您的帮助。如果您的ID具有更好的结构,那么您可以使用
RewriteCond
指令的“字典优先”功能,但它不能用于像1、30、2000这样的ID。。因为这是一个简单的字符串比较和30>2000(是的,这是一个字符串比较,而不是数字)。如果您的ID是0030,而不是30,那么它会像0030一样工作