All,
Trying to redirect too a URL like below:
http://domain/something/index.html#some/more/stuff.html
only problem here is that the # is getting changed into a %23 and it does not fine this URL.
Am i supposed to treat this differently?
Thanks in advance
Citty
Was missing the no escape tag [NE]
citty
Related
I am redesigning a clients' old website to look better. They built a website themselves with very strange URLS. I have looked everywhere for the answer and I have achieved some success but not all by using 301 redirects.
They had urls like website/name ++.htm and I need to do a 301 redirect to website/name.php
Is there anyone that knows how I can 301 a URL that has a space ++.htm in the name.
Thanks
Try
RedirectMatch ^/([^+\s]+)\s*\+*\.htm$ /$1.php
This will redirect
http://example.com/name++.htm
to
http://example.com/name.php
In regex , + is a special character, it matchs the preceeding charecter 1 or more time, so to match it litterly in URI, you need to escape it by placing a backslash before it :
\+
I'm using IIS7.5 and have a rule for rewriting a URL...
The rule is:
^trade/new_products/page([^/]+)/?.*$
But, this is only working when I don't include a slash - e.g.
http://www.website.com/trade/new_products/page1
I'd like it to also work with
http://www.toppstiles.co.uk/trade/new_products/page1/
Can I do this or do I need a separate rule?
This group ([^/]+) is catching everything but slash. If your page is only numeric you can try this one:
^trade/new_products/page([0-9]+)/?.*$
If not, you can use the non greedy modifier on the multiplier(+?):
^trade/new_products/page([^/]+?)/?.*$
Sorry - the rule was working as expected - it was another issue that was causing my problem!
I want to redirect all these kind of requests
http://www.example.com/2013/01/my-sample-post/feed
or
http://www.example.com/2013/01/my-sample-post/feed/
to
http://www.example.com/2013/01/my-sample-post/
I am using sinatra and rack--rewrite gem.
rewrite %r{/*/feed?}, '/$1' // not working..
You missed a dot in the regex. You also need a capture group with () around the wildcard, so it should be (.*) between the slashes. Iguess you are also missing a slash at the end. This should work:
rewrite %r{/(.*)/feed/?}, '/$1'
I'm using mod Rewrite to rewrite part of the URL to a query parameter
URLs are of the form
http://www.my_site.com/ABC
where ABC is the bit to force into a query parameter to my index.php in a sub directory
My .htaccess has the following:
RewriteEngine on
RewriteRule ^/?([a-zA-Z0-9]+)/?$ directory/index.php?Site=$1 [L]
When I have a lowercase ABC e.g:
my_site.com/abc
the browser URL remains unchanged and the page works perfectly with abc being passed in the GET.
However, when ABC is UPPERCASE e.g:
my_site.com/ABC
the URL in the browser becomes:
my_site.com/ABC/?Site=ABC
It works OK and ABC is still in the GET parameter but it looks ugly!
Why does case affect this and can I make BOTH upper and lower case maintain the original URL?
Further note: I tried an example of a different server and it worked perfectly! Any ideas if there are server settings that could affect this?
Thanks for any assistance
I've solved it - as sidoh said something else is going on.
If there is a directory on my server which is the same name as the parameter the mod_rewrite adds the query to the URL.
e.g.
If I've got a directory ABC on the server then using my mod_rewrite with www.domain.com/ABC results in the browser URL www.domain.com/ABC/Site=ABC - if no directory ABC all is fine and the URL remains www.domain.com/ABC (which is what I want).
Since I'm on Linux ABC is different to abc - which explains the apparent case sensitive nature of the behaviour.
Thanks to all for their inputs.
Do you mean, the [NC] nocase flag? Which will make the rule be matched in a case-insensitive manner. Means, it will doesn't care whether letters appear as upper-case or lower-case.
RewriteRule ^([a-zA-Z0-9]+)/?$ /directory/index.php?Site=$1 [NC]
I think, you want to rewrite a URL such /bigSMALL into /directory/index.php?Site=BIGsmall? If am I right, then the problem is in the program and not in URL remapping. However, in MySQL database, when you're getting the value of a query string for querying a WHERE value, it is match in a case-insensitive. Take a look at the picture:
Are you developing a website? If ever, then what DBMS are you using? Maybe, MySQL?
I am using below rule to read the URL like
URL:
http://www.example.com/blog/sampe-post-title/10004/
RULE:
RewriteRule (.*)/(.*)/([0-9]+)/$ $1/details.asp?mod_id=$3 [NS,I]
Everything was fine untill I discovered that links coming via feedburner are not working anymore. Because feedburner adds some extra parameter to URL for stats/tracking etc.
For example www.example.com/blog/sampe-post-title/10004/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed:+somesite+(my+feed)
My rewrite URL doesn't recognizes the above URL anymore. Any idea how to deal with it?
Try adding a rule for the feedburner URLs:
RewriteRule (.*)/(.*)/([0-9]+)/\?(.*)$ $1/details.asp?mod_id=$3&$4 [NS,I]
I added an extra RegEx group at the end to capture everything after the question mark and place it after mod_id. You could probably combine this with your other URL if you only wanted to have one rule for some reason, but you might as well just have two.
Try the QSA flag to get the original requested URL query automatically appended to the new one.
I managed to figure out the answer on my own: just replace the ending $ with .* That's it!
Here is the modified rule:
RewriteRule (.*)/(.*)/([0-9]+)/.* $1/details.asp?mod_id=$3 [NS,I]