2016-03-03 205 views
1

我想实现我需要别人的帮助下COMPLE重写规则..阿帕奇重写规则,太多的重定向错误

这里是我的要求..

HTTPS://{domain}/contextPath/browse  //should transformed to 
HTTPS://{domain}/contextPath?dl=browse 

另一个样品..

HTTPS://{domain}/contextPath/login  //should transformed to 
HTTPS://{domain}/contextPath?dl=login 

当我试图用这个规则,我收到了太多错误重定向..

RewriteRule ^/contextPath/(*) ^/contextPath?dl=$1 [R,L] 

能否请你帮我这个

- [03/Mar/2016:20:40:38 -0600] "GET /contextPath/loginall HTTP/1.1" 404 983 [Thu Mar 03 20:40:38.809774 2016] [rewrite:trace2] [pid 20144:tid 47425062725952] mod_rewrite.c(468): [rid#1ab7ae90/initial] init rewrite engine with requested uri /contextPath/loginall [Thu Mar 03 20:40:38.809805 2016] [rewrite:trace2] [pid 20144:tid 47425062725952] mod_rewrite.c(468): [rid#1ab7ae90/initial] rewrite '/contextPath/loginall' -> '/contextPath?dl=loginall' [Thu Mar 03 20:40:38.809821 2016] [rewrite:trace2] [pid 20144:tid 47425062725952] mod_rewrite.c(468): [rid#1ab7ae90/initial] local path result: /contextPath [Thu Mar 03 20:40:38.809877 2016] [rewrite:trace2] [pid 20144:tid 47425062725952] mod_rewrite.c(468): [rid#1ab7ae90/initial] prefixed with document_root to /apps/install/apache/httpd/htdocs_browser/contextPath [Thu Mar 03 20:40:38.809891 2016] [rewrite:trace1] [pid 20144:tid 47425062725952] mod_rewrite.c(468): [rid#1ab7ae90/initial] go-ahead with /apps/install/apache/httpd/htdocs_browser/contextPath [OK] [03/Mar/2016:20:40:38 -0600] 172.17.130.161 TLSv1.2 RC4-SHA "GET /contextPath/loginall HTTP/1.1" 983

+0

为什么** ** ^在目标路径? – starkeen

+0

对于域名的用途,是不是必需的。 – DevOpsNewB

+0

这是你的.htaccess文件中的'RewriteRule'指令吗? (实际上,我发现''.htaccess'标记后来被添加到了问题中,但是您的'RewriteRule'模式在.htaccess中不匹配。) – MrWhite

回答

1

RewriteRule ^/contextPath/(*) ^/contextPath?dl=$1 [R,L]

似乎有一些问题与此指令:

  • 模式(*)是无效,应该是(.*)
  • ^字符在替换开始时没有意义。 ^(插入符号)是正则表达式中字符串锚的开始。替换字符串不是一个正则表达式。因此,除非您的网址中有文字^,否则应该省略。
  • 这应该是内部重写,而不是外部重定向R标志)。想必您不想将您的/contextPath?dl=网址暴露给用户?

尝试像在你的Apache配置如下:

# Internally rewrite the request providing the "dl" param is not already present 
RewriteCond %{QUERY_STRING} !dl= 
RewriteRule ^/contextPath/(.+) contextPath?dl=$1 [L] 
+0

它没有工作:(我已经更新了我的查询部分跟踪日志。您能否请建议 – DevOpsNewB

+0

“跟踪日志”?您的意思是“没有工作”?“太多重定向仍然”? – MrWhite

+0

它给404,请参阅更新的跟踪日志 – DevOpsNewB