Apache mod_rewrite将所有非脚本 URI 的子文件夹替换为不同的子文件夹



我的目标是将非 jsp URL 重定向到不同的子文件夹

浏览器网址

  • http://mydomain.com/site-Xghthhg/css/styles1/layouts.css
  • http://mydomain.com/site-Xghthhg/jslibs/jquery/jquery.js
  • http://mydomain.com/site-Xghthhg/jslibs/jquery/plugins/jd/jquery.jd.js

代理到

  • http://mydomain.com/map/css/styles1/layouts.css
  • http://mydomain.com/map/jslibs/jquery/jquery.js
  • http://mydomain.com/map/jslibs/jquery/plugins/jd/jquery.jd.js

httpd.conf

RewriteCond  %{REQUEST_FILENAME} !(.+.jsp) 
RewriteCond  %{REQUEST_URI} ^/site-(.*)/^(.*)$
RewriteRule  ^/site-(.*)/^(.*)$ /map/$2 [P] 

我不明白为什么它不起作用!

您应该在第一行使用 REQUEST_URI。 您不需要第二行。最后,您的正则表达式无效,插入符号表示"匹配开头",因此在正则表达式中间使用它毫无意义。

 RewriteCond %{REQUEST_URI} !(.+.jsp)
 RewriteRule ^/site-([^/]*)/(.*)$ /map/$2 [P]

在这里,我确实在中间使用了插入符号,但在 [] 上下文中,插入符号具有不同的含义:匹配除以下内容以外的任何字符(因此 [^/]* 匹配非斜杠的字符串)。

最新更新