我是apache重写规则的新手。 我正在尝试重写网址
例如:
http://www.example.com/try/this/all+letters+with+plus - > http://www.example.com/try/this/allletterswithplus
所以要求是我必须将其重定向到包含/ try / this的URL,其余的不包括+符号。需要注意的一点是,加号的数量不固定,它可以有2到7个或者可能更多加号。优选地,具有正则表达式的选项将是好的,因为所有+字母+带+加文本可以包括从数字到字母但没有符号的任何内容
我尝试了一些组合,但后来进入了递归循环。
非常感谢任何帮助。
答案 0 :(得分:1)
您可以使用mod_rewrite分两步完成此操作。第一步是从/try/this/
之后的任何内容中删除所有“+”,然后第二步是检查请求是否最初具有“+”但当前URI不是。
此规则将继续删除“+”符号,直到没有。但我们只是通过重写引擎传递它。
RewriteRule ^try/this/(.*)\+(.*)$ /try/this/$1$2 [PT]
此规则检查原始请求中是否包含带有“+”的URL,如果是,则检查它们是否全部被删除。如果是这样,请结束所有重写并重定向浏览器:
RewriteCond %{THE_REQUEST} \ /try/this/.*\+.*\ HTTP
RewriteRule ^try/this/([^\+]*)$ /try/this/$1 [R,L]
您提到您想要重定向到没有“+”符号的/ try / this / URL。但是如果你只是想在内部重写它而不是重定向浏览器,那么你不需要第二部分,只需要删除第一部分。