View previous topic :: View next topic |
Author |
Message |
cenocre -
Joined: 12 Mar 2007 Posts: 47
|
Posted: Tue Mar 10, 2009 9:06 pm Post subject: Why is a / required? |
|
|
In doing the following change:
http://domain.com/this/index.html --> http://domain.com/that/index.html
This works:
Quote: | Virtual path: ^/this(.*)$
internal redirection to: /that$1
append query string |
This does not:
Quote: | Virtual path: ^this(.*)$
internal redirection to: that$1
append query string |
The only difference is the leading "/". Why should this matter at all? I have found that this also occurs in all other rewrites. What gives? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
pkSML -
Joined: 29 May 2006 Posts: 952 Location: Michigan, USA
|
Posted: Wed Mar 11, 2009 3:10 am Post subject: |
|
|
The short answer: that's just how HTTP works.
When you make a request for http://aprelium.com/index.html , it looks like this to the web server:
Code: | GET /index.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: www.aprelium.com
Connection: Keep-Alive
Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; _csuid=498f917c28e37df5 |
These were the HTTP headers my browser sent. Below are the response HTTP headers generated by Aprelium's web server.
Code: | HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Fri, 20 Feb 2009 12:17:14 GMT
Vary: User-Agent
Content-Encoding: gzip
Connection: Keep-Alive
Keep-Alive: timeout=200000, max=10
Transfer-Encoding: Chunked
Date: Wed, 11 Mar 2009 02:06:11 GMT
Server: Abyss/2.6.0.0-X2-Linux AbyssLib/2.6.0.0 |
You'll notice I asked aprelium.com for the page /index.html. All HTTP requests begin with a slash. Even if I just ask for http://aprelium.com , it will ask for this:
GET / HTTP/1.1 (which is asking for the default page).
FYI, your regex said the request must begin with "this" or "that". Requests always begin with a slash, so nothing in your example would match. The caret (^) means "begins with" in regex. _________________ Stephen
Need a LitlURL?
http://CodeBin.yi.org |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
cenocre -
Joined: 12 Mar 2007 Posts: 47
|
Posted: Wed Mar 11, 2009 9:22 pm Post subject: |
|
|
So, if ^ means beginswith is there something that means contains? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
pkSML -
Joined: 29 May 2006 Posts: 952 Location: Michigan, USA
|
Posted: Thu Mar 12, 2009 1:35 am Post subject: |
|
|
cenocre wrote: | So, if ^ means beginswith is there something that means contains? |
Nothing.
By default, it's looking to see if the requested URL (URI actually) matches (contains) the regex. The caret is a modifier. BTW, the dollar sign means ends with.
So in your example that didn't work, just take out the caret and it would work as you expected.
BUT, if you just have this or that in the regex, it will match more than you potentially realize. That's why it's good practice to get specific as possible with regex.
"this" will match:
thispage
whatpageisthis
/whatever/secret/this/page etc... _________________ Stephen
Need a LitlURL?
http://CodeBin.yi.org |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|