RewriteRule causing redirection - mod-rewrite

I have IIS 7.5 with ISAPI_Rewrite(Helicon)
I'm trying to do so that the robots.txt from each hosted site will be the same.
For that purpose I have one dummy site(sometestsite.com) which has robots1.txt(which I want to be reused on each other site)
And I have following RewriteRule:
RewriteRule ^(.*)/robots.txt$ http://sometestsite.com/robots1.txt
When I am requesting http://sometestsite.com/robots.txt it displays contents of http://sometestsite.com/robots1.txt as expected, but when I am requesting http://completelydifferentsite.com/robots.txt it redirects me to http://sometestsite.com/robots1.txt.
What I am doing wrong? Also if here is another approach to achieve my goal I will be very thankful to hear one.

Related

.htaccess image to web page redirect of sorts

I think this can be done, though not sure, so I came here to find out from you experts. I researched extensively, but always get the opposite of what I want to do. I was wondering if someone types in the image file URL (on server side) into an address bar if that could be directed to its corresponding web page.
For example:
One types in yourdomain.com/wp-content/uploads/image-name.jpg and it's directed to yourdomain.com/print/image-name (w/o .jpg)
So instead of one just seeing the image in a window, they will see the image, it's information and how to purchase it on my brand web site.
If that is not possible or the file name doesn't match, can directly typed server side image file URLs redirect to my website galleries or home page? And where in .htaccess would this code be located? Above begin wordpress or not?
If above Begin WP, will that interfere with this code that already exists? If so how would I exactly write it?
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.sitename.com/$1 [R,L]
Thanks in advance!
EDIT: To clarify, my site being down has nothing to do with the help I received here. I upgraded my web host account and there was a glitch when they migrated it.
Insert this rule just below RewriteEngine On line:
RewriteCond %{THE_REQUEST} /wp-content/uploads/(.+?)\.jpg [NC]
RewriteRule ^ /print/%1? [L,R=302,NE]

how to redirect a link in my website to an external link?

I have provided a link from my web site in my andoird app which is:
www.mysite.com/support
And i want this link to be redirected to:
www.anothersite.com
i have already tried com_redirect and entered support as source and http://ww.anothersite.com but i dont get any redirects and i get 404 error.
I am running Joomla 3.x and i want to know how i can do this with URL rewrites and no external components.
It seems not possible to do it within the Joomla backend (i tried many combination of menu items and the redirect module).
For sure you can write your redirect directly in your .htaccess (if you are using it) like this:
RewriteEngine On # Turn on the rewriting engine
RewriteRule ^support/?$ http://www.anothersite.com/ [R=301,NC,L] # Permanent Move
or
RewriteEngine On # Turn on the rewriting engine
RewriteRule ^support/?$ http://www.anothersite.com [R,NC,L] # Temporary Move
More info about URL rewriting and .htaccess are here: http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/

URL Rewrite for Internal (SEO) that Eliminates Original Link

My site is built in php and I have URL rewrites to make the .php links more SEO friendly:
RewriteRule ^page-one$ /pageone.php [L]
The problem with this is that someone, including Google bots, can still see pageone.php from when it was previously indexed. So I end up with two links for each page. That's bad.
How can I set this up so that I get the benefit of rewriting to page-one, while somehow making sure an external request to pageone.php is redirected to page-one?
How about redirecting page-one.php to pageone?
RewriteRule ^page-one.php$ /pageone [R=301,NC,L]

htaccess redirect raw image viewing

I'd like to redirect any image that is viewed directly to a handler page:
if http:// mysite.com/pics/filename.jpg (or www.)is in the URL
then redirect to http:// mysite.com/pics/index.php?img=filename.jpg (no www)
But if the image is being called by a webpage or a mobile html5 app anywhere then it should be served per normal.
So if mypage.html contains an img tag with the direct photo in it it will be shown in that page. But if http:// mysite.com/pics/filename.jpg is the url then it should redirect. In other words if the file is being viewed directly it should redirect to the wrapper page, but if it's already in a wrapper page (anywhere) it shouldn't redirect.
I've seen various redirect code but none that that references the visible url for the if statement, so I don't know how to do this. And the ones I've found and tried don't work, either redirecting all requests, or not doing anything
Thanks!
This will take care of people hotlinking to images on your site for you:-
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysite.com [NC]
RewriteRule ([^/]+)\.(jpg|jpeg|png|gif)$ pics/index.php?img=$1.$2 [NC,L,R]
As for your mobile HTML5 app you are going to need some other way to identify it to your web server. So you are going to have to see what referer that says it is when it is asking for images. It should be pretty easy for you to write a PHP script to tell you that, then you just need to add to the above code to include that.
Simon

URL Rewriting for user accounts

We currently have domain.com/username redirected to domain.com/setsession.asp?u=username which then redirects to the app at domain.com/theapp.
This means users always see domain.com/theapp, so browsing to a page shows domain.com/theapp/somepage.asp
Looking to move this to subdomains ie
username.domain.com
(we'll get the host name and work out the user from that). How can this be set up? Should we move the app itself to say theapp.domain.com and then rewrite username.domain.com to theapp.domain.com and everything works?
If thats right, how can we do the URL rewrite (mod_rewrite via ISAPI Rewrite for IIS or URL Rewriting for IIS) so that we can still access webmail.domain.com, etc?
If you just want to move domain.com/username to username.domain.com, you can do this with mod_rewrite:
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$
RewriteRule .* http://domain.com/setsession.asp?u=%1 [B,R=permanent]

Resources