Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Jetty 9 Redirect from Root to Sub-Directory.


Thank you very much Alexei! Regex lookarounds are something
I have trouble with.  Did you do this off
the top of your head? It worked perfectly, but I am trying to figure out how to
debug this, so that I learn from all this.
 
            My first
problem is that after getting your suggestion to work i.e. enabling 

OPTIONS=rewrite
etc/jetty-rewrite.xml
in my start.ini and putting your suggestion into
jetty-rewrite.xml, I decided to comment out the new rule from
jetty-rewrite.xml. I have no other rules at this time, but I am running Solr on
this jetty instance. When I attempt to access / i.e. http://localhost:7070/ I get a 500 error, not
a 404 error that I expected and I get the following exception in my log file.
 
1412 [main] INFO  org.apache.solr.servlet.SolrDispatchFilter  -
user.dir=C:\Users\<<MyUserName>>\Documents\Jetty\NewJetty9
1412 [main] INFO  org.apache.solr.servlet.SolrDispatchFilter  - SolrDispatchFilter.init() done
2013-06-06 11:14:31.008:INFO:oejsh.ContextHandler:main:
Started
o.e.j.w.WebAppContext@41d12299{/solr,file:/C:/Users/<<MyUserName>>/AppData/Local/Temp/jetty-0.0.0.0-7070-solr.war-_solr-any-/webapp/,AVAILABLE}{C:\Users\<<MyUserName>>\Documents\Jetty\NewJetty9\webapps\solr.war}
2013-06-06 11:14:31.075:INFO:oejs.ServerConnector:main:
Started ServerConnector@48ee6315{HTTP/1.1}{0.0.0.0:7070}
2013-06-06 11:14:31.207:WARN:oejs.HttpChannel:qtp1881283994-32:
/
java.lang.NullPointerException
            at
org.eclipse.jetty.rewrite.handler.RuleContainer.apply(RuleContainer.java:199)
            at
org.eclipse.jetty.rewrite.handler.RuleContainer.matchAndApply(RuleContainer.java:186)
            at
org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:313)
            at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
            at
org.eclipse.jetty.server.Server.handle(Server.java:445)
            at
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:260)
            at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:225)
            at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358)
            at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:596)
            at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:527)
            at
java.lang.Thread.run(Unknown Source)
 
Just to make sure, I restored jetty-rewrite.xml from the
original download and I still get this exception. However, if I disable i.e.
comment out the two lines mentioned above in the start.ini, then I correctly
get the expected 404. Why does this happen?
 
            I also
attempted to modify your suggestion to make rewrite possible from http://localhost:7070/foo/bar to http://localhost:7070/solr/#/foo/bar (I’m just playing here). I tried the following: 
 
<Call name="addRule">
  <Arg>
    <New
class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
      <Set
name="regex">(^(?!/solr/#/).*)</Set>
      <Set
name="replacement">/solr/#$1</Set>
    </New>
  </Arg>
</Call>
 
This did not work. Do I need to escape the # ? I didn’t
think # is a special character in regex.
 
Thank you for all the help.
O. O. 


----- Mensaje original -----
De: Alexei Mikhailov <alexei.mikhailov@xxxxxxxxxxxx>
Para: jetty-users@xxxxxxxxxxx
CC: 
Enviado: Jueves, 6 de junio, 2013 1:59 A.M.
Asunto: Re: [jetty-users] Jetty 9 Redirect from Root to Sub-Directory.

Hi there,

On 6/5/13 23:08, O. Olson wrote:
> 
> Perfect Joakim! Thank you very much.
>   Could someone please show me how to edit the
> jetty-rewrite.xml to rewrite from http://localhost:7070/ to http://localhost:7070/solr/
>  
It somewhat depends on what effect you want to achieve. I would assume you want http://localhost:7070/foo/bar be redirected to http://localhost:7070/solr/foo/bar?
In this case, regex would be something like:

<Call name="addRule">
  <Arg>
    <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
      <Set name="regex">(^(?!/solr/).*)</Set>
      <Set name="replacement">/solr$1</Set>
    </New>
  </Arg>
</Call>

Here, regex matches any characters after root context, (excluding "/solr/", since that's where you want your redirect to go), and groups them so we can reference those in "replacement". It's not the most elegant regex, but at least it's (somewhat) readable.

Hope that helps,
Alex-


> As mentioned in my original post I looked at http://www.eclipse.org/jetty/documentation/current/jetty-handlers.html#rewrite-handler.
> Is this the correct way to add the rewrite rule? (I have absolutely no clue,
> but someone suggested this online.)
>   <!-- Newly added to rewrite from root to slor -->
>               <Call name="addRule">
>          <Arg>
>            <New
> class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
>              <Set
> name="regex">^$</Set>
>              <Set
> name="replacement">/solr/</Set>
>            </New>
>          </Arg>
>        </Call>
>   Thank you again,
> O. O.
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users



Back to the top