ignore out the version in the url and add trailing slash except for the file
I have to add a trailing slash in the url that refers to a location that doesn't correspond to an actual, individual file. For e.g:
http://example.com/Myapp/42.5.01/Mobile.zip
Here i have in the url the version of the application which has ".' for e.g 42.5.01. So when i have the below regular ex:
rewrite ^([^.]*[^/])$ $1/ permanent;
This is ignoring to put the trailing slash after 42.5.01. Hence we are not able to access/download the Mobile.zip.
The Trailing slash should not be for individual file only.
The file can be a ".tar", ".war", or a ".zip"
How do i make sure the trailing slash is for the version but not for the application.
regex nginx
add a comment |
I have to add a trailing slash in the url that refers to a location that doesn't correspond to an actual, individual file. For e.g:
http://example.com/Myapp/42.5.01/Mobile.zip
Here i have in the url the version of the application which has ".' for e.g 42.5.01. So when i have the below regular ex:
rewrite ^([^.]*[^/])$ $1/ permanent;
This is ignoring to put the trailing slash after 42.5.01. Hence we are not able to access/download the Mobile.zip.
The Trailing slash should not be for individual file only.
The file can be a ".tar", ".war", or a ".zip"
How do i make sure the trailing slash is for the version but not for the application.
regex nginx
add a comment |
I have to add a trailing slash in the url that refers to a location that doesn't correspond to an actual, individual file. For e.g:
http://example.com/Myapp/42.5.01/Mobile.zip
Here i have in the url the version of the application which has ".' for e.g 42.5.01. So when i have the below regular ex:
rewrite ^([^.]*[^/])$ $1/ permanent;
This is ignoring to put the trailing slash after 42.5.01. Hence we are not able to access/download the Mobile.zip.
The Trailing slash should not be for individual file only.
The file can be a ".tar", ".war", or a ".zip"
How do i make sure the trailing slash is for the version but not for the application.
regex nginx
I have to add a trailing slash in the url that refers to a location that doesn't correspond to an actual, individual file. For e.g:
http://example.com/Myapp/42.5.01/Mobile.zip
Here i have in the url the version of the application which has ".' for e.g 42.5.01. So when i have the below regular ex:
rewrite ^([^.]*[^/])$ $1/ permanent;
This is ignoring to put the trailing slash after 42.5.01. Hence we are not able to access/download the Mobile.zip.
The Trailing slash should not be for individual file only.
The file can be a ".tar", ".war", or a ".zip"
How do i make sure the trailing slash is for the version but not for the application.
regex nginx
regex nginx
asked Nov 22 '18 at 6:59
krishna_vkrishna_v
76111850
76111850
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can use a regular expression with a negative lookahead assertion to match some patterns but ignore other patterns. For example, to match URIs which do not end with a /
character and ignore URIs that end with a 3 or 4 character extension, you could use:
rewrite "^/(?!.*.[A-Za-z]{3,4}$).*[^/]$" $uri/ permanent;
The first part (?!.*.[A-Za-z]{3,4}$)
is a negative lookahead. See this document for details.
Alternatively, you can use break
in a rule to stop rewrite
processing before your rule is reached, for example:
if ($uri ~ ".[A-Za-z]{3,4}$") { break; }
rewrite "[^/]$" $uri/ permanent;
Or:
rewrite ".[A-Za-z]{3,4}$" $uri break;
rewrite "[^/]$" $uri/ permanent;
See this document for details.
Finally, depending on the structure of your configuration file, you may be able to use location
blocks to limit the scope of the rewrite. For example:
location / {
return 301 $uri/;
}
location ~ ".[A-Za-z]{3,4}$" {
...
}
location ~ /$ {
...
}
The above is likely to break any non-trivial configuration as Nginx chooses a single location
block to process a request and the presence of other location
blocks will interfere with the logic.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425433%2fignore-out-the-version-in-the-url-and-add-trailing-slash-except-for-the-file%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use a regular expression with a negative lookahead assertion to match some patterns but ignore other patterns. For example, to match URIs which do not end with a /
character and ignore URIs that end with a 3 or 4 character extension, you could use:
rewrite "^/(?!.*.[A-Za-z]{3,4}$).*[^/]$" $uri/ permanent;
The first part (?!.*.[A-Za-z]{3,4}$)
is a negative lookahead. See this document for details.
Alternatively, you can use break
in a rule to stop rewrite
processing before your rule is reached, for example:
if ($uri ~ ".[A-Za-z]{3,4}$") { break; }
rewrite "[^/]$" $uri/ permanent;
Or:
rewrite ".[A-Za-z]{3,4}$" $uri break;
rewrite "[^/]$" $uri/ permanent;
See this document for details.
Finally, depending on the structure of your configuration file, you may be able to use location
blocks to limit the scope of the rewrite. For example:
location / {
return 301 $uri/;
}
location ~ ".[A-Za-z]{3,4}$" {
...
}
location ~ /$ {
...
}
The above is likely to break any non-trivial configuration as Nginx chooses a single location
block to process a request and the presence of other location
blocks will interfere with the logic.
add a comment |
You can use a regular expression with a negative lookahead assertion to match some patterns but ignore other patterns. For example, to match URIs which do not end with a /
character and ignore URIs that end with a 3 or 4 character extension, you could use:
rewrite "^/(?!.*.[A-Za-z]{3,4}$).*[^/]$" $uri/ permanent;
The first part (?!.*.[A-Za-z]{3,4}$)
is a negative lookahead. See this document for details.
Alternatively, you can use break
in a rule to stop rewrite
processing before your rule is reached, for example:
if ($uri ~ ".[A-Za-z]{3,4}$") { break; }
rewrite "[^/]$" $uri/ permanent;
Or:
rewrite ".[A-Za-z]{3,4}$" $uri break;
rewrite "[^/]$" $uri/ permanent;
See this document for details.
Finally, depending on the structure of your configuration file, you may be able to use location
blocks to limit the scope of the rewrite. For example:
location / {
return 301 $uri/;
}
location ~ ".[A-Za-z]{3,4}$" {
...
}
location ~ /$ {
...
}
The above is likely to break any non-trivial configuration as Nginx chooses a single location
block to process a request and the presence of other location
blocks will interfere with the logic.
add a comment |
You can use a regular expression with a negative lookahead assertion to match some patterns but ignore other patterns. For example, to match URIs which do not end with a /
character and ignore URIs that end with a 3 or 4 character extension, you could use:
rewrite "^/(?!.*.[A-Za-z]{3,4}$).*[^/]$" $uri/ permanent;
The first part (?!.*.[A-Za-z]{3,4}$)
is a negative lookahead. See this document for details.
Alternatively, you can use break
in a rule to stop rewrite
processing before your rule is reached, for example:
if ($uri ~ ".[A-Za-z]{3,4}$") { break; }
rewrite "[^/]$" $uri/ permanent;
Or:
rewrite ".[A-Za-z]{3,4}$" $uri break;
rewrite "[^/]$" $uri/ permanent;
See this document for details.
Finally, depending on the structure of your configuration file, you may be able to use location
blocks to limit the scope of the rewrite. For example:
location / {
return 301 $uri/;
}
location ~ ".[A-Za-z]{3,4}$" {
...
}
location ~ /$ {
...
}
The above is likely to break any non-trivial configuration as Nginx chooses a single location
block to process a request and the presence of other location
blocks will interfere with the logic.
You can use a regular expression with a negative lookahead assertion to match some patterns but ignore other patterns. For example, to match URIs which do not end with a /
character and ignore URIs that end with a 3 or 4 character extension, you could use:
rewrite "^/(?!.*.[A-Za-z]{3,4}$).*[^/]$" $uri/ permanent;
The first part (?!.*.[A-Za-z]{3,4}$)
is a negative lookahead. See this document for details.
Alternatively, you can use break
in a rule to stop rewrite
processing before your rule is reached, for example:
if ($uri ~ ".[A-Za-z]{3,4}$") { break; }
rewrite "[^/]$" $uri/ permanent;
Or:
rewrite ".[A-Za-z]{3,4}$" $uri break;
rewrite "[^/]$" $uri/ permanent;
See this document for details.
Finally, depending on the structure of your configuration file, you may be able to use location
blocks to limit the scope of the rewrite. For example:
location / {
return 301 $uri/;
}
location ~ ".[A-Za-z]{3,4}$" {
...
}
location ~ /$ {
...
}
The above is likely to break any non-trivial configuration as Nginx chooses a single location
block to process a request and the presence of other location
blocks will interfere with the logic.
answered Nov 22 '18 at 10:21
Richard SmithRichard Smith
19.7k42137
19.7k42137
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425433%2fignore-out-the-version-in-the-url-and-add-trailing-slash-except-for-the-file%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown