.Htaccess এ আমার <If> নির্দেশিকা কীভাবে ব্যবহার করা উচিত?


16

আমি আমার .htaccess ফাইলটিতে অ্যাপাচি এর নির্দেশিকা ব্যবহার করে শর্তযুক্ত বিবৃতি যুক্ত করার চেষ্টা করছি।

আমি এই পৃষ্ঠাটি http://httpd.apache.org/docs/trunk/mod/core.html#if উল্লেখ করেছি তবে এটি অনেক বিস্তারিত ব্যাখ্যা দেয় না / অনেক উদাহরণ দেয়। এটি দুটি অসম্পূর্ণ উদাহরণ দেয়:

<যদি%, REQUEST_METHOD} GET, শিরোনাম, বিকল্পসমূহ> 

এবং

<যদি "q req {হোস্ট} = ''"> থাকে 

সুতরাং আমি এটি আমার .htaccess ফাইলে যুক্ত করার চেষ্টা করেছি:

<যদি% {SERVER_PORT} GET, হেড, বিকল্পগুলি>
   এখানে এখনও কিছুই নেই
</ তাহলে>

পৃষ্ঠাটি লোড করার চেষ্টা করার পরে আমি ত্রুটি 500 পেতে চলেছি । এটি আমার স্থানীয় ইনস্টলটিতে রয়েছে এবং এটি আগে ভাল কাজ করছিল (বা আমি যদি কোডটি সরিয়ে দিই)। আমি বিশ্বাস করি যে আমি AllowOverride Allবিশ্বব্যাপী সেট আপ করেছি এবং যদি নির্দেশাবলীর প্রসঙ্গটি এটি .htaccess ("প্রসঙ্গ: সার্ভার কনফিগারেশন, ভার্চুয়াল হোস্ট, ডিরেক্টরি, .htaccess") উপস্থিত হতে দেওয়া উচিত।

<< নির্দেশিকা সঠিকভাবে কীভাবে ব্যবহার করতে হয় তার কোনও উদাহরণ আমাকে দিতে পারে বা কেন এটি আমার পক্ষে কাজ করছে না?

ধন্যবাদ!


1
যদি আপনি 500 টি ত্রুটি পেয়ে থাকেন তবে এর অর্থ হ'ল অ্যাপাচি আপনার ত্রুটি লগটিতে কিছু লগ করেছে। এটা কি বলে? এছাড়াও, আপনার পরীক্ষা SERVER_PORTমধ্যে GET,HEAD,OPTIONSকোন অর্থে দেখা যায় না ( SERVER_PORTযার উপর অনুরোধ গ্রহণ করা হয়েছিল সংখ্যা পোর্ট নম্বর হতে যাচ্ছে)।
22:14

ধন্যবাদ, লার্স্কস দেখে মনে হচ্ছে আমি অ্যাপাচি ২.০ চালাচ্ছি যা <If> নির্দেশকে সমর্থন করে না। হয়তো আমার আপগ্রেডিং ২.৩ এ দেখার প্রয়োজন। কমপক্ষে এটি ব্যাখ্যা করে যে কেন কোথাও কোনও উদাহরণ নেই (বি / সি বৈশিষ্ট্যটি এত নতুন)। পরামর্শের জন্য ধন্যবাদ.
সিডব্লিউ

উত্তর:



16

<If> কেবল অ্যাপাচি ২.৪++ এ উপলব্ধ, তাই প্রথমে নিশ্চিত হয়ে নিন যে আপনার কাছে সেই সংস্করণ রয়েছে।

উদাহরণ

# Compare the host name to example.com and redirect to www.example.com if it matches
<If "%{HTTP_HOST} == 'example.com'">
  Redirect permanent "/" "http://www.example.com/"
</If>

<If "%{HTTP_HOST} =~ /regex/">
  SecFilterEngine Off
  SecFilterScanPOST Off
</If>

<If "%{REQUEST_URI} =~ m#/regex/including/slashes/#">
  SecFilterEngine Off
  SecFilterScanPOST Off
</If>

বিকল্প <If>

আপনি যদি এখনও এর সাথে আটকে থাকেন তবে অ্যাপাচি ২.২ এ শর্তযুক্ত বিবৃতি দেওয়ার জন্য আরও কয়েকটি সমাধান রয়েছে।

  • আপনি এর মাধ্যমে পরিবেশের ভেরিয়েবল সেট করতে পারেন:

    • অ্যাপাচি কনফিগারেশন
    • SetEnvIf
    • mod_rewrite এর RewriteMatch
  • তারপরে আপনি শর্তযুক্ত বিবৃতি ব্যবহার করে সম্পাদন করতে পারেন

    <IfDefine MyEnvironmentVar>
       ...
    </IfDefine>
    

উদাহরণ:

# Set environment variable if we're on staging site
SetEnvIf Host staging ROBOTS_NOINDEX

# Set environment variable if we're within a specific folder
SetEnvIf Request_URI ^/app/webroot/files/ ROBOTS_NOINDEX

# Send custom header if environment variable is set
Header set X-Robots-Tag "noindex" ENV=ROBOTS_NOINDEX

1
পরীক্ষা দিলেও কাজ হচ্ছে না! অ্যাপাচি থেকে দস্তাবেজে, <IfDefine>নির্দেশিকা কেবল প্রারম্ভকালে পার্স করে এবং parameter-nameকেবলমাত্র কমান্ড প্রম্প ব্যবহার করে পাশ করতে পারেhttpd -Dx=y
উইলিয়াম লেউং

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