আপনি কীভাবে এইচটিটিপিএসকে এইচটিটিপিতে পুনর্নির্দেশ করবেন?


166

আপনি কীভাবে এইচটিটিপিএসকে এইচটিটিপিতে পুনর্নির্দেশ করবেন ?. এটি, যা (আপাতদৃষ্টিতে) প্রত্যেকে শিক্ষা দেয় তার বিপরীত।

আমার এইচটিটিপিএসে একটি সার্ভার রয়েছে যার জন্য আমি একটি এসএসএল শংসাপত্র দিয়েছিলাম এবং একটি আয়না যার জন্য আমি করিনি এবং কেবল জরুরী পরিস্থিতিতে রাখি যাতে এটির জন্য কোনও শংসাপত্র পাওয়ার যোগ্যতা থাকে না।

আমার ক্লায়েন্টের ডেস্কটপগুলিতে আমার কাছে কয়েকটি শর্টকাট রয়েছে যা নির্দেশ করে http://production_serverএবং https://production_server(উভয় কাজ)। তবে, আমি জানি যে যদি আমার প্রোডাকশন সার্ভারটি নিচে চলে যায়, তবে ডিএনএস ফরোয়ার্ডিং শুরু হয় এবং যে ক্লায়েন্টগুলির শর্টকাটে "https" রয়েছে তাদের দিকে তাকানো হবে https://mirror_server(যা কাজ করে না) এবং একটি বড় ফ্যাটযুক্ত ইন্টারনেট এক্সপ্লোরার une অস্থিরতার লাল পর্দা আমার সংস্থার জন্য

দুর্ভাগ্যক্রমে, আমি কেবল ক্লায়েন্ট স্তরে এটি স্যুইচ করতে পারি না। এই ব্যবহারকারীরা খুব কম্পিউটার নিরক্ষর: এবং সম্ভবত এইচটিটিপিএস "নিরাপত্তাহীনতা" ত্রুটিগুলি দেখা থেকে বিরক্ত হওয়ার সম্ভাবনা রয়েছে (বিশেষত ফায়ারফক্স 3 এবং ইন্টারনেট এক্সপ্লোরার 7 এটি আজকাল যেভাবে পরিচালনা করে: ফুল স্টপ, এক ধরণের ধন্যবাদ, তবে আমাকে এখানে এলওএল সাহায্য না করে)।

এটা খুব সহজ এটি এ্যাপাচি সমাধান জন্য http-> HTTPS ফেরৎ , কিন্তু আমার জীবনে আমি বিপরীত করতে পারবেন না।

ধারনা?


2
এটা করো না ! এইচটিটিপি থেকে এইচটিটিপিএস পুনঃনির্দেশগুলি অত্যন্ত বিপজ্জনক (এবং বাস্তবিকই আপত্তিজনক কারণে সমস্ত ব্রাউজার দ্বারা অবরুদ্ধ করা হবে), বিশেষত যদি এটি নীরব এইচটিটিপি স্থিতির মাধ্যমে নোড হয় (তবে এটি জাভাস্ক্রিপ্ট দ্বারা করা হয় তবে এটি সত্য), যদি না হয়: (1) একটি ক্ষণস্থায়ী এইচটিটিপিএস পার্কিং পৃষ্ঠাতে ব্যবহারকারীরা একটি লিঙ্কটিকে সক্রিয়ভাবে ক্লিক করে অনুসরণ করতে আমন্ত্রণ জানাচ্ছেন; বা: - (২) এইচটিটিপিএস ঠিক একই ডোমেনে HTTP এ পুনঃনির্দেশ করে এবং পুনঃনির্দেশগুলি অনুরোধ করা সামগ্রীর ধরণের পরিবর্তন করে না। এটি ব্রাউজারগুলিতে মঞ্জুরি দেওয়ার ফলে প্রচুর ম্যালওয়্যার বিচ্ছিন্ন হয়ে যাওয়ার অনুমতি পেয়েছে। এই জাতীয় পুনঃনির্দেশগুলি খুব ছলনাময়।
verdy_p

4
এটি কোনও অভ্যন্তরীণ সাইটের মতো দেখায়, যেখানে ওপি জানে যে এটি কী চলছে এবং এটি বিপজ্জনক নয় ... যদি এটি কোনও ওয়েব ফেসিং সার্ভার হয় তবে আমি আপনার সাথে একমত হব, তবে একটি অভ্যন্তরীণ, স্থানীয় একমাত্র ওয়েব সার্ভার, একটি পুনর্নির্দেশ এই ফ্যাশন একটি সমস্যা হবে না।
স্টিজে

@verdy_p আমি বন্দি পোর্টালগুলির ক্ষেত্রে, HTTPS থেকে HTTP 302 পুনর্নির্দেশগুলিতে কাজ করছি। আপনি যে ডকুমেন্টেশনটির সাথে উল্লেখ করছেন তা আমাকে উল্লেখ করতে পারেন?
jprusakova

আপনার ক্যাপটিভ পোর্টালের জন্য, কখনও কখনও কোনও HTTPS থেকে HTTP 302 পুনর্নির্দেশের কোনও কাজ সম্পাদন করবেন না যদি এটি ঠিক একই ডোমেনে হয় (এমনকি একটি সাবডোমেনও নয়)। এবং তথ্যের প্রকাশের উচ্চ ঝুঁকির কারণে সেশন টোকেন এবং কুকিজগুলি থেকে সাবধান থাকুন পুনর্নির্দেশের সাথে স্বচ্ছভাবে পাস! আপনার জানা উচিত যে এইচটিটিপি লক্ষ্যবস্তুগুলি ট্যুইক করা যায় এবং ম্যালওয়্যার স্বচ্ছ প্রক্সি এবং এমনকি দূষিত ডিএনএস দ্বারাও তথ্য নেওয়া যেতে পারে: আপনার প্রবর্তক মায়ু এমনকি আপনার জানে না যে কেবলমাত্র আপনার এইচটিটিপি-র টার্গেটটি অ্যাক্সেসযোগ্য হবে এবং বাস্তবে কোনও ব্ল্যাকহ্যাটে যাবে! তাই ব্যক্তিগত সেশন / কুকিজ / অনুরোধগুলি অন্তর্ভুক্ত HTTPS লিঙ্কগুলিতে কখনই করবেন না।
verdy_p

এই জাতীয় HTTPS 302 পুনর্নির্দেশ আপনার HTTPS সাইটে সর্বদা সুরক্ষা গর্ত হয়। বিশাল ঝুঁকিটি সেশনগুলি চুরি হয়ে যাওয়া এবং আপনার অনুমোদনপ্রাপ্ত ব্যবহারকারীদের ব্যক্তিগত অ্যাকাউন্টগুলি কাটা হচ্ছে is এবং সব ক্ষেত্রে, জাভাস্ক্রিপ্টগুলি লোড করার জন্য বা সক্রিয় মাল্টিমিডিয়া কখনও কখনও এ জাতীয় পুনঃনির্দেশগুলি করেন না: এটি এইচটিটিপিএস "স্যান্ডবক্স" রাজ্যের একটি উন্মুক্ত দরজা। সত্যিই বিপরীত কিছু করার কথা বিবেচনা করুন: এইচটিটিপিএসকে এইচটিটিপিএসে পুনঃনির্দেশ করুন (উল্লেখযোগ্যভাবে আপনার মূল পোর্টাল বা স্থির পাবলিক পৃষ্ঠাগুলি যাদের ব্যক্তিগত ডেটা / সেশন / কুকিজের প্রয়োজন নেই) এবং ইভেরেলের জন্য এইচটিটিপিএস ব্যবহার করুন। আপনার যদি কখনও এইচটিটিপিএস থেকে এইচটিটিপি-তে যাওয়ার প্রয়োজন হয়, স্ট্যান্ডার্ড লিঙ্কগুলি (স্বতন্ত্র অনুরোধে) ব্যবহার করুন
verdy_p

উত্তর:


128

এটি পরীক্ষা করা হয়নি তবে আমি মনে করি এটি মোড_আরাইট ব্যবহার করে কাজ করা উচিত

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

1
আমি কীভাবে এটি কাজ করব (এই কোডটি কাজ করতে আমার কোডটি আমার ডোমেনে পরিবর্তন করতে হবে)?
এনভেন

1
এনভেন: আপনার সাইটের vhost_ssl.conf কনফিগারেশনে (বা সাইটের মূলে .htaccess) কেবল যুক্ত করুন। কিছুই পরিবর্তন করার দরকার নেই এটি একই হোস্টের নাম এবং url পাথটি গতিশীলভাবে ব্যবহার করবে।
ড্যারেন ফেল্টন

1
আমি মনে করি আপনি কোয়েরি স্ট্রিংগুলিও ধরতে চাইতে পারেন। আমি নিশ্চিত নই, তবে আমি মনে করি উপরের স্নিপেটটি কোয়েরি স্ট্রিংগুলি https থেকে HTTP তে ফরোয়ার্ড করবে না।
রুস্তভোর

12
নীচে কাইরনের নির্দেশ অনুসারে, মিরর সার্ভারের কোনও বৈধ শংসাপত্র না থাকলে এটি কাজ করবে না। অবৈধ শংসাপত্রের কারণে আপনি এখনও একটি বড় লাল সতর্কতা দেখতে পাবেন। আপনি একবার https ব্যবহার শুরু করলে আপনি মূলত এটির সাথে আটকে যান। আপনার সারা জীবন এটির জন্য অর্থ প্রদানের জন্য প্রস্তুত থাকুন। যদি আপনি অর্থ প্রদান বন্ধ করে দেন তবে https লিঙ্কগুলিকে বুকমার্ক করা লোকেরা আসতে পারবে না।
স্টিফেন চেং

2
আপনার সারা জীবনের জন্য অর্থ প্রদান? আপনি এখনও এইচটিটিপিএস ব্যবহার করতে পারেন তবে আপনার পিকেআই সরবরাহকারী পরিবর্তন করুন এবং নতুন সস্তা শংসাপত্র পাবেন। আপনি এখনও কয়েক হাজার টাকা প্রদান করবেন হ্যাঁ, তবে এটি আপনার ডোমেন নাম এবং আপনার হোস্টিংয়ের ক্ষেত্রেও সত্য! একটি পিকেআই শংসাপত্র এখন ডোমেন নামের তুলনায় ব্যয়বহুল নয়, এবং হোস্টিং / ব্যান্ডউইথ ব্যয়ের তুলনায় তুচ্ছ!
verdy_p

71

মনে রাখবেন যে পুনরায় লেখার ইঞ্জিনটি কেবল এইচটিটিপি অনুরোধটি পেয়ে গেলেই কিক করে - যার অর্থ আপনার কাছে এখনও একটি শংসাপত্রের প্রয়োজন হবে, যাতে ক্লায়েন্টটি অনুরোধটি প্রেরণের জন্য সংযোগ স্থাপন করতে পারে!

তবে যদি ব্যাকআপ মেশিনটিতে একই হোস্টনামটি উপস্থিত হয় (ক্লায়েন্টের সাথে সম্পর্কিত), তবে প্রধান উত্পাদন মেশিন হিসাবে আপনি একই শংসাপত্রটি ব্যবহার করতে পারবেন না এমন কোনও কারণ নেই।


1
কীভাবে এই সীমাবদ্ধতা অতিক্রম করা যায়? আমি একই সমস্যা হচ্ছে না। পুনর্নির্দেশের আগে ব্রাউজার থেকে শংসাপত্রের ত্রুটি পাওয়া।
সন্দীপ বালাগোপাল

কোনও শংসাপত্রের ত্রুটি থাকলে HTTP এ পুনর্নির্দেশ করা ভাল হবে
জেফ্রি দ্য জিরাফ

এটি প্রথম স্থানে এইচটিটিপিএস থাকার উদ্দেশ্যকে পুরোপুরি পরাভূত করে
ফ্লাফিবিং ২

12

ইজুনকারের উত্তরের ভিত্তিতে, এটি সমাধানটি আমার পক্ষে কাজ করে, একক সার্ভারে নয়, মেঘের পরিবেশে

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

301 ব্যবহার করা সামান্য বিপজ্জনক হতে পারে। 301 এর অর্থ নিয়মিতভাবে সরানো হয়েছে এবং আমার ধারণা https থেকে HTTP এ সাময়িকভাবে করা। কি কনস ব্যবহারকারীদের জন্য হবে এই গৃহীত উত্তর দেখার stackoverflow.com/questions/1393280/...
ইউসুফ tezel

301/302 স্থায়ী / অস্থায়ী পার্থক্য কেবল অনুসন্ধান ইঞ্জিনগুলির সাথে সম্পর্কিত।
ম্যাথেভাইভ 789

9

যারা একটি .confফাইল ব্যবহার করছেন তাদের জন্য ।

<VirtualHost *:443>
    ServerName domain.com
    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/domain.crt
    SSLCertificateKeyFile /etc/apache2/ssl/domain.key
    SSLCACertificateFile /etc/apache2/ssl/domain.crt

</VirtualHost>

8

উপরের সমাধানগুলির কোনওটি যদি আপনার পক্ষে কাজ করে না (তারা আমার পক্ষে করেন নি) তবে এখানে আমার সার্ভারে যা কাজ করেছে:

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

6
প্রায়শই বার, আপনি চাইবেন না L,(যার অর্থ "শেষ নিয়ম")। আপনি যদি ওয়ার্ডপ্রেস বা অন্য কোনও সিএমএস ব্যবহার করছেন তবে Lপতাকাটি পৃষ্ঠার অনুরোধটিকে সঠিকভাবে রুট হওয়া থেকে বিরত রাখতে পারে। পরিবর্তে ব্যবহার করুন:RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301]
রুস্তাভোর

5

উপরের সমস্তগুলি যখন আমি ক্লাউডফ্লেয়ার ব্যবহার করতাম না তখন সেগুলি আমার পক্ষে কাজ করেছিল:

RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

এবং এটি অবশ্যই প্রক্সি ছাড়াই কাজ করে:

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

3

আপনি যখন পারেন তখন মোড_আরাইট ব্যবহার এড়ানো ভাল।

আপনার ক্ষেত্রে আমি এটি দিয়ে পুনর্নির্মাণটি প্রতিস্থাপন করব:

    <If "%{HTTPS} == 'on'" >
            Redirect permanent / http://production_server/
    </If>

<If>এই ব্লগ অনুসারে নির্দেশিকাটি কেবল অ্যাপাচি ২.৪++ এ উপলব্ধ ।


একটি হোস্ট করা পরিবেশে, কেউ আপাচি ব্যবহার করে সংস্করণটি পরীক্ষা করতে পারে/usr/sbin/httpd -v
সার্জ স্ট্রোব্যান্ড্ট

1

এটা আমার জন্য কাজ করে।

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
    Redirect "https://www.example.com/" "http://www.example.com/"
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    # ... 
</VirtualHost>

উভয় বন্দর 80 এবং 443 শুনতে ভুলবেন না।


0

উত্তরগুলির কোনওটিই ওয়ার্ডপ্রেস ওয়েবসাইটে আমার জন্য কাজ করে না তবে নিম্নলিখিত কাজগুলি করে (এটি অন্যান্য উত্তরের সাথে সমান তবে কিছুটা পরিবর্তন আছে)

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

সমস্ত REQUEST_URI দিয়ে এই নিয়মগুলি অন্ধভাবে ব্যবহার করবেন না (ইউআরআই-তে কোনও ফর্ম ডেটা থাকলে, বা অনুরোধ মেটাডেটাতে কুকিজ / সেশন আইডি থাকলে এটি ব্যবহার করা উচিত নয়)। এটি কেবল স্থির পাবলিক পৃষ্ঠাগুলি / চিত্রগুলির জন্য ব্যবহার করুন। এটি জাভাস্ক্রিপ্ট বা সক্রিয় উপাদানগুলির জন্য পুরোপুরি এড়িয়ে চলুন (উল্লেখযোগ্যভাবে স্ক্রিপ্টযোগ্য ভিডিও স্ট্রিম, বা সক্রিয় পিডিএফগুলি যদি না সেগুলি আপনার দ্বারা ডিজিটালি স্বাক্ষরিত হয়! তবে জাভাস্ক্রিপ্টগুলিতে ডিজিটালি স্বাক্ষর করা এখনও সম্ভব নয়, কেবল আপনার সুরক্ষিত ডোমেনে রেখে দিন) keep
verdy_p

দ্রষ্টব্য: কিছু চিত্র ফর্ম্যাট সক্রিয় এবং স্ক্রিপ্টযোগ্য: উদাহরণস্বরূপ এসভিজি সম্পর্কে সাবধান থাকুন। আমরা এইচটিটিপিএস (সাইটের 302 পুনর্নির্দেশের সাহায্যে) থেকে এসভিজি চিত্র লোড করে এমন কিছু এইচটিপিপিএস ওয়েবসাইটে হামলা দেখেছি এবং এসভিজি বিষয়বস্তুগুলিতে ম্যালওয়্যারগুলি স্ক্রিপ্টগুলি সন্নিবেশ করিয়েছি ... আদর্শভাবে ব্রাউজারগুলিতে এইচটিটিপিএস থেকে এইচটিটিপি সাবকন্টেন্টগুলি আলাদা করতে হবে এবং এটি একটি স্যান্ডবক্সে স্থাপন করা উচিত (সুতরাং সিআরএস) সুরক্ষা নিষেধাজ্ঞাগুলিও একই প্রযোজ্য হওয়া উচিত, এমনকি এটি একই ডোমেন নামে থাকলেও ...) সুতরাং "http: // (ডোমেন) / ..." এবং "https: // (ডোমেন) /" আলাদা আলাদা ডোমেন হিসাবে বিবেচিত হবে একই টিসিপি পোর্ট নম্বরে থাকলেও সিওআরএস (একই উত্স নয়)।
verdy_p

@verdy_p, "সাইটের 302 পুনর্নির্দেশগুলি সহ" এর অর্থ কী? এইচটিটিপি রিসোর্স অনুরোধটি কাজে লাগাতে আপনাকে প্রথমে সার্ভার-সাইটটি (বা টিসিপি / আইপি স্তরের অংশীদার নোডগুলি, যেমন ডিএনএস সার্ভার, রাউটার) এর মালিক হতে হবে?
জেড

অগত্যা। কোনও ডোমেনের এইচটিটিপিএস নিরাপদ থাকবে যখন একই ডোমেনে এইচটিটিপি হবে না (ডিএনএসএসইসি ব্যবহার করার পরেও শোষকদের কোনও আইপি বা রাউটারগুলি নিয়ন্ত্রণ করতে হবে না, বা ডিএনএস সার্ভারগুলি ব্যবহার করতে হবে; শোষণগুলি কেবল আইপি স্পুফিং ব্যবহার করতে পারে, যা HTTPS ছাড়া নিরাপদে সনাক্ত করা যায় না) সুরক্ষিত সেশন)। সুতরাং আমি বজায় রেখেছি যে এইচটিটিপিএস সাইটের অবশ্যই চিত্রগুলি হোস্ট করতে হবে (এমনকি একই ডোমেনেও) এইচটিটিপি দিয়ে তাদের পরিবেশন না করে (এমন কোনও ব্রাউজারে এটি ডিফল্টরূপে অস্বীকারও করতে পারে যা একটি অ্যাক্টিভেশন ক্লিক বা সেই অনিরাপদ চিত্রগুলি মুখোশযুক্ত)। মিশ্র HTTPS / HTTP অবশ্যই নিষিদ্ধ করা উচিত: সাইটটি তার HTTP অংশগুলিতে আক্রমণযোগ্য (যেমন ট্র্যাক পিক্সেল)।
verdy_p

-6

আমি যতক্ষণ জানি একটি সাধারণ মেটা রিফ্রেশ সম্পর্কে ত্রুটি সৃষ্টি না করেও কাজ করে:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">

12
আমি আশা করি ভোটারদের ডাউন ভোটের কারণ ব্যাখ্যা করে মন্তব্য করতে হবে। ব্যক্তিগতভাবে, আমি এই উত্তরটি বেছে নেব না যদি না আপনি বিকাশকারী হিসাবে আপনি যে সার্ভারটির জন্য বিকাশ করছেন তার অ্যাক্সেস না পেয়ে তবে আপনি পৃষ্ঠাটিতে অ্যাক্সেস না পেয়েছেন। একটি সমস্যা হ'ল এটি কাজ করতে আপনাকে প্রতিটি পৃষ্ঠার প্রতিটি পথ হার্ডকোড করতে হবে। আপনি যদি ধরে নিতে পারেন যে আপনার গুরুত্বপূর্ণ ব্যবহারের ক্ষেত্রে জাভাস্ক্রিপ্ট সক্ষম হয়েছে, তবে আপনি জাভাস্ক্রিপ্ট ব্যবহার করে আরও ভাল হয়ে উঠতে পারেন HTTP তে পরিবর্তন করতে। উপরের উত্তরগুলি আরও ভাল কারণ তারা সার্ভারে হওয়ার কারণে জাভাস্ক্রিপ্টের প্রয়োজন নেই।
রুস্তভোর

2
সহজভাবে: কারণ এইচটিসেস তার চেয়ে আরও ভাল বিকল্প। এছাড়াও, যদি আপনার কোনও শংসাপত্র না থাকে তবে https প্রোটোকলটিকে HTTP এ পুনঃনির্দেশ করতে সমস্যাটি ঠিক করবে না।
মধ্যদেব

1
ক্রিয়াটি সার্ভার দ্বারা প্রক্রিয়া করা উচিত, এটি পরিবেশন করতে পারে এমন একটি 'ডকুমেন্ট' নয়।
অ্যালবাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.