এইচটিসেসে AuthUserFile এর সাথে কীভাবে একটি সম্পর্কিত পাথ ব্যবহার করবেন?


102

আমার কাছে একটি .htaccess আছে যা বেসিক প্রমাণীকরণ ব্যবহার করে। মনে হচ্ছে .htpasswd ফাইলটির পথটি htaccess ফাইলের সাথে সম্পর্কিত নয়, পরিবর্তে সার্ভার কনফিগারেশনের সাথে সম্পর্কিত।

আমার কাছে একই ডিরেক্টরিতে .htaccess এবং .htpasswd ফাইল থাকা সত্ত্বেও, এটি কাজ করে না:

AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user

যাইহোক, আমি যদি নিরঙ্কুশ পথটি ব্যবহার করতে AuthUserFile পরিবর্তন করি তবে এটি কাজ করে:

AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user

তবে আমি এটি বিভিন্ন অঞ্চলে একাধিক সাইটে এটি ব্যবহার করার কারণে আরও কিছু মোবাইল পছন্দ করব। আমি ওয়েবটি অনুসন্ধান করেছি কিন্তু কোনও সমাধান হয়নি had আপেক্ষিক পথ বা ভেরিয়েবলগুলি ব্যবহার করা কি সম্ভব %{DOCUMENT_ROOT}?

উত্তর:


52

AuthUserFile এর জন্য আপেক্ষিক পাথ ব্যবহার করা সম্ভব নয় :

ফাইল-পাথ হ'ল ব্যবহারকারীর ফাইলের পথ। এটি যদি নিরঙ্কুশ না হয় (যেমন, এটি যদি স্ল্যাশ দিয়ে শুরু না হয়), এটি এর সাথে সম্পর্কিত বলে বিবেচিত হবে ServerRoot

আপনাকে এই সীমাবদ্ধতাটি গ্রহণ করতে হবে এবং কাজ করতে হবে।


আমরা IfDefineঅ্যাপাচি 2 কমান্ড লাইন প্যারামিটারের সাথে একসাথে ব্যবহার করছি :

.htaccess (উভয় বিকাশ এবং লাইভ সিস্টেমের জন্য উপযুক্ত):

<IfDefine !development>
  AuthType Basic
  AuthName "Say the secret word"
  AuthUserFile /var/www/hostname/.htpasswd
  Require valid-user
</IfDefine>

বিকাশ সার্ভার কনফিগারেশন (দেবিয়ান)

নিম্নলিখিতগুলিতে যুক্ত করুন /etc/apache2/envvars:

export APACHE_ARGUMENTS=-Ddevelopment

এরপরে আপনার অ্যাপাচি পুনরায় চালু করুন এবং আপনি যখন ডেভলপমেন্ট সার্ভারে না থাকবেন তখনই আপনি একটি পাসওয়ার্ড প্রম্পট পাবেন।

আপনি অবশ্যই ডেভলপমেন্ট সার্ভারের জন্য অন্য একটি আইফডিফাইন যুক্ত করতে পারেন, কেবল ব্লকটি অনুলিপি করুন এবং মুছে ফেলুন !


4
তবে এটি এখনও একটি নিখুঁত পাথ ব্যবহার করে ( /var/...) - এবং প্রশ্নটি জিজ্ঞাসা করে: "কীভাবে আপেক্ষিক পথ ব্যবহার করবেন"?
sdaau

4
এবং তারপরে প্রশ্নটি "" না "দিয়ে সঠিকভাবে উত্তর দেওয়ার জন্য সম্পাদনা করা হয়েছিল :)
ইরেনোর পাজ

15

কেবলমাত্র যদি লোকেরা এর সমাধানের সন্ধান করে তবে:

<If "req('Host') = 'www.example.com'">
    Authtype Basic
    AuthName "user and password"
    AuthUserFile /var/www/www.example.com/.htpasswd
    Require valid-user
</If>

4
এটি দুর্দান্ত হবে তবে নির্ভর করা কি নিরাপদ req('Host'), ক্লায়েন্ট কি এই মানটিকে চালিত করতে পারে না?
মার্কো ডেমাইও

4
@ মার্কোডেমিও হ্যাঁ, উদাহরণস্বরূপ, আইপি ঠিকানাটি ব্যবহার করে এটি ট্রিক করা যায় / হতে পারে। এটি আপনার কনফিগারেশনের উপর নির্ভর করে। এটি একেবারে হ্যাঁ বা না নয়। এটা নির্ভর করে.
ম্যাক্সিমাই

12

1) নোট করুন যে .htpasswdসার্ভারের মূলের নীচে ফাইল থাকা নিরাপদ considered

2) নথিগুলি আপেক্ষিক পাথ সম্পর্কে এটি বলে, তাই দেখে মনে হচ্ছে আপনি ভাগ্য থেকে দূরে রয়েছেন:

ফাইল-পাথ হ'ল ব্যবহারকারীর ফাইলের পথ। এটি যদি নিরঙ্কুশ না হয় (যেমন, এটি যদি স্ল্যাশ দিয়ে শুরু না হয়), এটি সার্ভার রুটের সাথে সম্পর্কিত বলে বিবেচিত হবে

৩) পরিবেশের ভেরিয়েবলগুলি ব্যবহারের প্রস্তাব দেওয়া উত্তরগুলি পুরোপুরি ঠিকঠাক কাজ করার জন্য, আমি .htaccessফাইলটিতে একটি স্থানধারককে পছন্দ করতে বা আমার কোডবেজে বিভিন্ন সংস্করণ রাখতে পছন্দ করি এবং স্থাপনার প্রক্রিয়াটি এটি সমস্ত সেট আপ করতে (যেমন স্থানধারকগুলি প্রতিস্থাপন করুন বা নাম পরিবর্তন / উপযুক্ত ফাইলটি সরান)।

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


8

আপনি আপনার লেখকের সেটিংস একটি পরিবেশে রাখতে পারেন। পছন্দ:

SetEnvIf HTTP_HOST testsite.local APPLICATION_ENV=development
<IfDefine !APPLICATION_ENV>
  Allow from all
  AuthType Basic
  AuthName "My Testseite - Login" 
  AuthUserFile /Users/tho/htdocs/wgh_staging/.htpasswd
  Require user username
</IfDefine>

আথ কাজ করছে, তবে আমি সত্যিই আমার পরিবেশটি চালু করতে পারি নি।


4
আমি মনে করি সমস্যাটি হ'ল: "পূর্ববর্তী সেটএএনভিআইফ [নো কেস] নির্দেশাবলী দ্বারা সংজ্ঞায়িত কেবল সেই পরিবেশের পরিবর্তনগুলি এই পদ্ধতিতে পরীক্ষার জন্য উপলব্ধ ' বর্তমান নির্দেশকের সুযোগ "। (এখানে পাওয়া গেছে: Askapache.com/htaccess/setenvif.html ) আপনার একই স্কোপ থাকার কারণে আপনি আপনার পরিবেশ চলমান রাখতে পারেন নি।
ব্যবহারকারী470370

4
কেন এই কাজ করছে না অত্যন্ত ভালো এখানে ব্যাখ্যা stackoverflow.com/questions/11073752/...
নিকো gawenda

তবে এটি এখনও একটি নিখুঁত পাথ ব্যবহার করে ( /Users/...) - এবং প্রশ্নটি জিজ্ঞাসা করে: "কীভাবে আপেক্ষিক পথ ব্যবহার করবেন"?
sdaau

হ্যাঁ. কিন্তু আপনি প্রতি পরিবেশে একাধিক পরম পথ ব্যবহার করতে একাধিক APPLICATION_ENV সেটিংস ব্যবহার করতে পারেন।
ডিজিটালডনকি

5

.htpasswd সার্ভারের পরম রুট থেকে সম্পূর্ণ নিখুঁত পাথ প্রয়োজন।

প্রতিধ্বনি দ্বারা ফাইলের সম্পূর্ণ পরম পথ পান echo $_SERVER['DOCUMENT_ROOT'];

এখানে বুনিয়াদি auth .htaccess স্ক্রিপ্ট কাজ করছে।

AuthType Basic
AuthName "Access to the Hidden Files"
AuthUserFile 'C:/xampp/htdocs/ht/.htpasswd'
Require valid-user

লগইনের আগে

এখানে চিত্র বর্ণনা লিখুন

আফটার লগইন

এখানে চিত্র বর্ণনা লিখুন


3

আপনি যদি উইন্ডোজের সাথে এক্সএএমপিপি ব্যবহার করার চেষ্টা করছেন এবং একটি লাইভ সার্ভারে একটি .htaccess ফাইল ব্যবহার করতে এবং একটি এক্সএএমপিপি বিকাশ মেশিনে বিকাশ করতে চান তবে নীচেরগুলি দুর্দান্ত কাজ করে!


1) এক্সএএমপিপি-র একটি নতুন ইনস্টলের পরে নিশ্চিত হোন যে অ্যাপাচি একটি পরিষেবা হিসাবে ইনস্টল করা আছে।

  • এটি এক্সএএমপিপি কন্ট্রোল প্যানেলটি খোলার মাধ্যমে এবং অ্যাপাচি মডিউলটির বামদিকে সামান্য লাল "এক্স" ক্লিক করে করা হয়।
  • এরপরে আপনাকে জিজ্ঞাসা করা হবে আপনি পরিষেবা হিসাবে অ্যাপাচি ইনস্টল করতে চান কিনা।
  • তারপরে এটি একটি সবুজ চেক মার্কে পরিণত হওয়া উচিত।

2) অ্যাপাচি যখন পরিষেবা হিসাবে ইনস্টল করা হয় তখন একটি পতাকা হিসাবে একটি নতুন পরিবেশের পরিবর্তনশীল যুক্ত করে।

  • প্রথমে এক্সএএমপিপি কন্ট্রোল প্যানেল থেকে অ্যাপাচি পরিষেবা বন্ধ করুন।
  • পরবর্তী কমান্ড প্রম্পট খুলুন। (আপনি জানেন যে ছোট কালো উইন্ডো সিমুলেটস ডস)
  • টাইপ করুন "সি: \ প্রোগ্রাম ফাইল (এক্স 86) \ XAMPP \ Apache \ বিন \ httpd.exe" -D "DEV" -k কনফিগ
  • এটি আপনি পরে ব্যবহার করতে পারেন এমন পরিবেশের ভেরিয়েবলগুলিতে একটি নতুন ডিইভি পতাকা যুক্ত করবে ।

3) অ্যাপাচি শুরু করুন

  • এক্সএএমপিপি নিয়ন্ত্রণ প্যানেল ব্যাক আপ খুলুন এবং অ্যাপাচি পরিষেবা শুরু করুন start

4) নিম্নলিখিত তথ্য সহ আপনার .htaccess ফাইলটি তৈরি করুন ...

<IfDefine DEV>
  AuthType Basic
  AuthName "Authorized access only!"
  AuthUserFile "/sandbox/web/scripts/.htpasswd"
  require valid-user
</IfDefine>

<IfDefine !DEV>
  AuthType Basic
  AuthName "Authorized access only!"
  AuthUserFile "/home/arvo/public_html/scripts/.htpasswd"
  require valid-user
</IfDefine>

উপরের স্ক্রিপ্টটি ব্যাখ্যা করতে এখানে কয়েকটি নোট দেওয়া আছে ...

  • আমার AuthUserFile আমার সেটআপ এবং ব্যক্তিগত পছন্দের উপর ভিত্তি করে।
  • আমি একটি স্থানীয় পরীক্ষা দেব বক্স আমার ওয়েব পেজ এ অবস্থিত আছে আছে \ স্যান্ডবক্স \ ওয়েব \: গ । সেই ফোল্ডারের অভ্যন্তরে আমার কাছে স্ক্রিপ্ট নামে একটি ফোল্ডার রয়েছে যা পাসওয়ার্ড ফাইল .htpasswd ধারণ করে ।
  • প্রথম এন্ট্রি ifDefine DEV সেই দৃষ্টান্তের জন্য ব্যবহৃত হয়। যদি ডিইভি সেট করা থাকে (যা আমরা উপরে যা করেছি কেবল কেবল মোটা ডিভ মেশিনে) তবে এটি সেই প্রবেশটি ব্যবহার করবে।
  • এবং পরিবর্তে যদি লাইভ সার্ভার ব্যবহার করা হয় তবে IfDefine! DEV ব্যবহার করা হবে।

5) নিম্নলিখিত পাসওয়ার্ড সহ আপনার পাসওয়ার্ড ফাইল (htpasswd নামে এই ক্ষেত্রে) তৈরি করুন ...

ব্যবহারকারী: $ apr1 1 EPuSBcwO $ / কেটিকিউডিউটিকিউএমএনইউএ 5 এলজিএক্সএসওজক।

কয়েকটি বিষয় লক্ষণীয় ...

  • আপনার পাসওয়ার্ড ফাইলটি আপনার যে কোনও নাম হতে পারে।
  • সুরক্ষার জন্য আপনার .htpasswd ব্যবহার করা উচিত।
  • একটি দুর্দান্ত পাসওয়ার্ড জেনারেটর পাওয়া গেছে @ http://www.htaccesstools.com/htpasswd-generator/
  • আপনার ফাইলটির জন্য সেই নামটি কেন ব্যবহার করা উচিত তার একটি দুর্দান্ত ব্যাখ্যা এবং কারণটি @ http://www.htaccesstools.com/articles/htpasswd/
  • আপনি পাসওয়ার্ড ফাইলটি সঠিক স্থানে রাখুন তা নিশ্চিত করুন !!! (পদক্ষেপ 4 AuthUserFile অঞ্চল দেখুন)

তবে এটি এখনও একটি নিখুঁত পাথ ব্যবহার করে ( /home...) - এবং প্রশ্নটি জিজ্ঞাসা করে: "কীভাবে আপেক্ষিক পথ ব্যবহার করবেন"?
sdaau

2

বা যদি আপনি লোকালহোস্টে বিকাশ করেন (কেবল অ্যাপাচি ২.৪++ এর জন্য):

<If "%{REMOTE_ADDR} != '127.0.0.1'">
</If>

1

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি কেবল একই জিনিসটি অনুসন্ধান করেছি এবং সম্ভবত আরও অনেকে আবার দ্রুত, মোবাইল সমাধান অনুসন্ধান করছে। অবশেষে আমি এখানে এলাম:

# We set production environment by default
SetEnv PROD_ENV 1

<IfDefine DEV_ENV>
  # If 'DEV_ENV' has been defined, then unset the PROD_ENV
  UnsetEnv PROD_ENV

  AuthType Basic
  AuthName "Protected Area"
  AuthUserFile /var/www/foo.local/.htpasswd
  Require valid-user
</IfDefine>

<IfDefine PROD_ENV>
  AuthType Basic
  AuthName "Protected Area"
  AuthUserFile /home/foo/public_html/.htpasswd
  Require valid-user
</IfDefine>

তবে এটি এখনও একটি নিখুঁত পাথ ব্যবহার করে ( /var...) - এবং প্রশ্নটি জিজ্ঞাসা করে: "কীভাবে আপেক্ষিক পথ ব্যবহার করবেন"?
sdaau

4
হ্যাঁ, এটি প্রায় কাজ, কারণ অ্যাপাচি .htaccessফাইলের অবস্থানের সাথে সম্পর্কিত পাথগুলি সমর্থন করে না । আপনি যদি কোনও আপেক্ষিক পথ ব্যবহার করেন তবে এটির সাথে সম্পর্কিত বলে বিবেচিত হবে ServerRoot
ওভি

1

একটি উদাহরণ নেওয়া যাক।

আপনার অ্যাপ্লিকেশনটি কিছু লিনাক্স সার্ভারে / var / www / myApp এ অবস্থিত

.htaccess : /var/www/myApp/.htaccess

htpasswdApp : / var / www / myApp / htpasswdApp । (আপনি .htpasswd ফাইলের জন্য কোনও নাম ব্যবহার করতে পারেন )

.Htaccess এ আপেক্ষিক পথ ব্যবহার করতে :

AuthType Digest
AuthName myApp
AuthUserFile "htpasswdApp"
Require valid-user

তবে এটি সার্ভার_রুট ডিরেক্টরিতে ফাইল অনুসন্ধান করবে । না document_root

সেক্ষেত্রে , যখন অ্যাপ্লিকেশনটি / var / www / myApp এ থাকে :

ডকুমেন্ট_রুটটি হ'ল / ভার / www / মাই অ্যাপ

সার্ভার_রুটটি হ'ল / ইত্যাদি / অ্যাপাচি 2 // (কেবল আমাদের উদাহরণে, আমরা লিনাক্স সার্ভার ব্যবহার করার কারণে )

আপনি এটি আপনার অ্যাপাচি কনফিগারেশন ফাইল ( /etc/apache2/apache2.conf ) এ পুনরায় সংজ্ঞা দিতে পারেন , তবে আমার ধারণা এটি খারাপ ধারণা।

সুতরাং আপনার /var/www/myApp/.htaccess এ আপেক্ষিক ফাইলের পাথ ব্যবহার করতে আপনার সার্ভার_রূটে পাসওয়ার্ডের ফাইলটি সংজ্ঞায়িত করা উচিত ।

আমি অনুসরণ কমান্ড দ্বারা এটি করতে পছন্দ:

sudo ln -s /var/www/myApp/htpasswdApp /etc/apache2/htpasswdApp

আপনি আমার আদেশটি অনুলিপি করতে পারেন, প্রতীকের পরিবর্তে একটি হার্ড লিঙ্ক ব্যবহার করতে পারেন, বা আপনার সার্ভার_রূটে একটি ফাইল অনুলিপি করতে পারেন


4
যেহেতু অ্যাপাচি ডিফল্টরূপে .ht * দিয়ে শুরু হওয়া ফাইলগুলিতে অ্যাক্সেস অবরুদ্ধ করে, তাই এগুলির জন্য এলোমেলো নাম ব্যবহার করার পরামর্শ দেওয়া হয় না।
cari
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.