mattoebs Posted April 7, 2009 Share Posted April 7, 2009 Hi I have 2 different statements I want to rewrite. the first is to rewrite all mysite.co.uk page request to mysite.com, i've done this bit with RewriteEngine On RewriteCond %{HTTP_HOST} ^www.mysite.co.uk$ [NC] RewriteRule ^(.*)$ http://www.mysite.com/$1 [R,PT] The second statement I need to write is http://www.mysite.com/quote[2-3].php to https://www.mysite.com/quote[2-3].php any help with this will be greatly appreciated. Quote Link to comment https://forums.phpfreaks.com/topic/152961-rewrite-help/ Share on other sites More sharing options...
gffg4574fghsDSGDGKJYM Posted April 7, 2009 Share Posted April 7, 2009 Your first part : RewriteCond %{HTTP_HOST} ^www.mysite.co.uk$ [NC] RewriteRule ^(.*)$ http://www.mysite.com/$1 [R,PT] Will only rewrite request from www.mysite.co.uk to www.mysite.com. This can be bad if someone type mysite.com or mysite.co.uk. This will rewrite everything that not www.mysite.com : RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC] RewriteRule ^(.*)$ http://www.mysite.com%{REQUEST_URI} [L,R=301] All request by IP adress, mysite.co.uk, www.mysite.co.uk and mysite.com or any other request that not www.mysite.com will be SEO-friendly redirected to www.mysite.com. If you have many domain in the same root folder you can use this to redirect the www and no-www version to a www.mysite.com version. RewriteCond %{HTTP_HOST} ^(.*)mysite\.co.uk$ [NC] RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] RewriteRule ^(.*)$ http://www.mysite.com%{REQUEST_URI} [L,R=301] For the https part you can use : RewriteCond %{HTTPS} off RewriteRule ^quote(.*)\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] Anything that not https AND start with quote AND end with php will be redirected to a https. You can maybe use the full filename instead of wildcards to prevent someone to play with it, though i hardly see how can someone use that to break security, in the end it will always end up in a 301 redirect to your website. To add more safety you can add in your php file something to test if you are on https or not, you can use many variables to make this script domain and file name independent and/or require_once(''); it on each page you need to be secure with https : <?php if ($_SERVER['HTTPS'] ....) { /* raise a error or redirect to a https page */ header('Location: https://www.somesite.com/somepage.php'); } ... ?> The complete code will look like this (untested of course but should work fine) : Options +FollowSymlinks RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} !^www\.mysite\.com$ [NC] RewriteRule ^(.*)$ http://www.mysite.com%{REQUEST_URI} [L,R=301] RewriteCond %{HTTPS} off RewriteRule ^quote(.*)\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] The order of the rewritecond/rewriterule is important since you don't want a request like http://mysite.co.uk/quote2.php to be redirect to a https://mysite.co.uk/quote2.php http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html Quote Link to comment https://forums.phpfreaks.com/topic/152961-rewrite-help/#findComment-803428 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.