পুনর্নির্দেশ, URL গুলি পরিবর্তন করুন বা আপাচে HTTPS এ HTTP পুনর্নির্দেশ করুন - Mod_Rewrit বিধি সম্পর্কে আপনি যা জানতে চেয়েছিলেন সবই কিন্তু জিজ্ঞাসা করতে ভয় পেয়েছিলেন


264

এটি অ্যাপাচের মোড_উইরাইট সম্পর্কে একটি ক্যানোনিকাল প্রশ্ন

একটি অনুরোধ ইউআরএল পরিবর্তন করা বা ব্যবহারকারীদের যাঁরা মূলত অনুরোধ করেছিলেন তার চেয়ে আলাদা URL এ পুনঃনির্দেশ মোড_আরাইট ব্যবহার করেই করা হচ্ছে। এর মধ্যে এমন বিষয় রয়েছে:

  • এইচটিপিটি এইচটিটিপিএসে পরিবর্তন করা (বা অন্য উপায়ে)
  • এমন কোনও পৃষ্ঠায় একটি অনুরোধ পরিবর্তন করা যা কোনও নতুন প্রতিস্থাপনের জন্য আর বিদ্যমান নেই।
  • ইউআরএল ফর্ম্যাটটি সংশোধন করা হচ্ছে (যেমন? আইডি = 3433 থেকে আইডি / 3433)
  • চাঁদ এবং সূর্যের নীচে সম্ভব যে কোনও কিছুর উপর ভিত্তি করে রেফারারের ভিত্তিতে ব্রাউজারের ভিত্তিতে একটি ভিন্ন পৃষ্ঠা উপস্থাপন করা হচ্ছে।
  • ইউআরএল দিয়ে আপনি যে কোনও কিছু গোলমাল করতে চান

মোড_রাইটরাইট বিধি সম্পর্কে আপনি যা যা জানতে চেয়েছিলেন তা সবই কিন্তু জিজ্ঞাসা করতে ভয় পেয়েছিলেন!

আমি মোড_উরাইট বিধি লেখার ক্ষেত্রে কীভাবে বিশেষজ্ঞ হতে পারি?

  • মোড_উরাইট বিধিগুলির মৌলিক বিন্যাস এবং কাঠামো কী?
  • নিয়মিত ভাবের কোন রূপ / গন্ধটির আমার দৃ solid়রূপে উপলব্ধি করা দরকার?
  • পুনর্লিখনের নিয়ম লেখার সময় সর্বাধিক সাধারণ ভুল / সমস্যাগুলি কী কী?
  • মোড_উরাইট বিধি পরীক্ষা ও যাচাই করার জন্য একটি ভাল পদ্ধতি কী?
  • আমার কি সচেতন হওয়া উচিত মোড_আরাইটের নিয়মের এসইও বা পারফরম্যান্সের প্রভাবগুলি?
  • এমন কি সাধারণ পরিস্থিতি রয়েছে যেখানে মোড_ব্রাইটটি কাজের জন্য সঠিক উপকরণ হিসাবে মনে হতে পারে তবে তা নয়?
  • কিছু সাধারণ উদাহরণ কি কি?

আপনার নিয়ম পরীক্ষা করার জায়গা

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


9
এই প্রশ্নের পিছনে ধারণাটি হ'ল আমাদের আরও নিয়মিত ব্যবহারকারীদের উন্মাদ করে তোলে এমন সমস্ত অন্তহীন মোড_উইরাইট প্রশ্নের জন্য একটি ঘনিষ্ঠ পথ দেওয়া। এটি সার্ভারসফল্ট / প্রশ্নস / 749765 //how- does- subnetting- work এ সাবনেটিংয়ের মাধ্যমে যা করা হয়েছিল তার সাথে খুব মিল ।
কাইল ব্র্যান্ড্ট

1
এছাড়াও, আমি এই প্রশ্নে সত্যিকার অর্থে খুব বেশি কিছু চাই না , বরং তাদের উত্তর দেওয়া উচিত the আমি এই CW কারণ আমি নিশ্চিত পোস্টার কি আমি আশা করছি জন্য পূর্ণ প্রশংসা করতে চাই না চান সব mod_rewrite প্রশ্ন শেষ করতে mod_rewrite উত্তর
কাইল ব্র্যান্ড 18

4
দুঃখিত, আমি প্রশ্ন উত্সাহিত। ;-) আমি সত্যিই মনে করি এটি mod-rewriteট্যাগ অনুসন্ধান / ফিল্টারগুলির শীর্ষে (বা কাছাকাছি) দেখানো দরকার ।
স্টিভেন সোমবার

অন্য কারও (টিএম) সাধারণ ব্যবহারের কেসগুলি পরিচালনা করা উচিত। আমি তাদের ন্যায়বিচার করতে যথেষ্ট জানি না।
sysadmin1138

পথটিকে আরও খাটো করার জন্য সম্ভবত এই প্রশ্নটি মোড-রাইরাইট ট্যাগ উইকের সাথে যুক্ত করা উচিত।
বেলডাজ

উত্তর:


224

mod_rewrite সিনট্যাক্স ক্রম

মোড_উইরাইটের কিছু নির্দিষ্ট ক্রমবিধি রয়েছে যা প্রক্রিয়াজাতকরণকে প্রভাবিত করে। কিছু সম্পন্ন হওয়ার আগে, RewriteEngine Onনির্দেশটি দেওয়া দরকার কারণ এটি মোড_প্রিট প্রক্রিয়াকরণটি চালু করে। এটি অন্য কোনও পুনর্লিখনের নির্দেশাবলীর আগে হওয়া উচিত।

RewriteCondপূর্ববর্তীটি RewriteRuleশর্তসাপেক্ষে সেই এক নিয়মকে সাবজেক্ট করে। নিম্নলিখিত যে কোনও RewritRules প্রক্রিয়া করা হবে যেন তারা শর্ত সাপেক্ষে ছিল না।

RewriteEngine On
RewriteCond %{HTTP_REFERER}          ^https?://serverfault\.com(/|$)
RewriteRule $/blog/(.*)\.html        $/blog/$1.sf.html

এই সাধারণ ক্ষেত্রে, যদি এইচটিটিপি রেফারার সার্ভারফল্ট ডট কম থেকে থাকে, তবে ব্লগের অনুরোধগুলি বিশেষ সার্ভারফ্রোল্ট পৃষ্ঠাগুলিতে পুনর্নির্দেশ করুন (আমরা কেবল এটি বিশেষ। তবে উপরের ব্লকে যদি অতিরিক্ত পুনরায় লেখার লাইন থাকে:

RewriteEngine On
RewriteCond %{HTTP_REFERER}          ^https?://serverfault\.com(/|$)
RewriteRule $/blog/(.*)\.html        $/blog/$1.sf.html
RewriteRule $/blog/(.*)\.jpg         $/blog/$1.sf.jpg

সমস্ত .jpg ফাইলগুলি বিশেষ সার্ভারফল্ট পৃষ্ঠাগুলিতে যাবে, কেবল এখানে রেফার করে এমন ইঙ্গিত দেয় না। এই বিধিগুলি কীভাবে লিখিত হয় এটি স্পষ্টভাবে উদ্দেশ্য নয়। এটি একাধিক RewriteCond বিধি দ্বারা করা যেতে পারে:

RewriteEngine On
RewriteCond %{HTTP_REFERER}          ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.html        /blog/$1.sf.html
RewriteCond %{HTTP_REFERER}          ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.jpg         /blog/$1.sf.jpg

তবে সম্ভবত কিছু ট্রিকিয়ার রিপ্লেসমেন্ট সিনট্যাক্স দিয়ে করা উচিত।

RewriteEngine On
RewriteCond %{HTTP_REFERER}                ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.(html|jpg)        /blog/$1.sf.$2

আরও জটিল RewritRule প্রক্রিয়াকরণের শর্তাদি রয়েছে। শেষ প্যারেন্টিথিকাল, (html|jpg)রাইরাইটরুলকে দুটি htmlবা একটির jpgসাথে মিলে যায় এবং পুনরায় লেখার স্ট্রিংয়ে ম্যাচিং স্ট্রিংটিকে $ 2 হিসাবে উপস্থাপন করতে বলে। এটি যুক্তিসঙ্গতভাবে আগের ব্লকের সাথে সমান, যেখানে দুটি রিরাইটকন্ড / রাইরাইটরুল জুটি রয়েছে, এটি কেবল চারটির পরিবর্তে দুটি লাইনে এটি করে।

একাধিক রিরাইটকন্ড লাইন সুস্পষ্টভাবে ANDed হয় এবং স্পষ্টভাবে ORed করা যায়। সার্ভারফল্ট এবং সুপার ব্যবহারকারী উভয় থেকেই রেফারারদের পরিচালনা করতে (স্পষ্টভাবে OR):

RewriteEngine On
RewriteCond %{HTTP_REFERER}                ^https?://serverfault\.com(/|$)    [OR]
RewriteCond %{HTTP_REFERER}                ^https?://superuser\.com(/|$)
RewriteRule ^/blog/(.*)\.(html|jpg)        /blog/$1.sf.$2

ক্রোম ব্রাউজারগুলির সাথে সার্ভারফল্ট উল্লেখ করা পৃষ্ঠাগুলি পরিবেশন করতে (অন্তর্ভুক্ত এবং):

RewriteEngine On
RewriteCond %{HTTP_REFERER}                ^https?://serverfault\.com(/|$)
RewriteCond %{HTTP_USER_AGENT}             ^Mozilla.*Chrome.*$
RewriteRule ^/blog/(.*)\.(html|jpg)        /blog/$1.sf.$2

RewriteBaseনিম্নোক্ত RewriteRuleনির্দেশাবলী কীভাবে তাদের প্রসেসিং পরিচালনা করে তা সুনির্দিষ্টভাবে অর্ডারও নির্দিষ্ট করে । এটি .htaccess ফাইলগুলিতে খুব দরকারী। যদি এটি ব্যবহার করা হয় তবে এটি একটি .htaccess ফাইলে "রিরাইটইঙ্গাইন অন" এর অধীনে প্রথম নির্দেশিকা হওয়া উচিত। এই উদাহরণটি ধরুন:

RewriteEngine On
RewriteBase /blog
RewriteCond %{HTTP_REFERER}           ^https?://serverfault\.com(/|$)
RewriteRule ^(.*)\.(html|jpg)         $1.sf.$2

এটি মোড_আরাইটকে বলছে যে বর্তমানে এটি নির্দিষ্ট করা এই নির্দিষ্ট ইউআরএলটি শারীরিক ডিরেক্টরি পাথ (/ home / $ ব্যবহারকারীর নাম / পাবলিক_এইচটিএমএল / ব্লগ) এর পরিবর্তে http://example.com/blog/ এর মাধ্যমে এসেছিল এবং সেই অনুসারে এটি চিকিত্সা করার জন্য এসেছিল । এর কারণে, RewriteRuleইউআরএল-এ "/ ব্লগ" এর পরে স্ট্রিং-স্টার্টটি বিবেচনা করে। এখানে একই জিনিস দুটি ভিন্নভাবে লেখা হয়। একটিতে রাইরাইটবেস, অন্যটি ছাড়া:

RewriteEngine On

##Example 1: No RewriteBase##
RewriteCond %{HTTP_REFERER}                                   ^https?://serverfault\.com(/|$)
RewriteRule /home/assdr/public_html/blog/(.*)\.(html|jpg)     $1.sf.$2

##Example 2: With RewriteBase##
RewriteBase /blog
RewriteCond %{HTTP_REFERER}           ^https?://serverfault\.com(/|$)
RewriteRule ^(.*)\.(html|jpg)         $1.sf.$2

যেমন আপনি দেখতে পাচ্ছেন, ওয়েব- সার্ভারের চেয়ে কন্টেন্টের RewriteBaseওয়েব- সাইটের পথটি লিভারেজ করার নিয়মগুলিকে পুনর্লিখনের অনুমতি দেয় , যা এই জাতীয় ফাইলগুলি সম্পাদনা করার ক্ষেত্রে তাদের আরও বোধগম্য করে তুলতে পারে। এছাড়াও, তারা নির্দেশকে আরও ছোট করতে পারে, যার একটি নান্দনিক আবেদন রয়েছে।


RewritRule ম্যাচিং সিনট্যাক্স

RewritRule নিজেই ম্যাচের স্ট্রিংগুলির জন্য একটি জটিল বাক্য গঠন রয়েছে। আমি অন্য বিভাগে পতাকাগুলি ([পিটি] এর মতো জিনিস) কভার করব। কারণ সিসাদমিনরা ম্যান-পেজ পড়ার চেয়ে উদাহরণস্বরূপ আরও প্রায়ই শিখেন আমি উদাহরণ দেব এবং তারা কী করবে তা ব্যাখ্যা করব।

RewriteRule ^/blog/(.*)$    /newblog/$1

.*কনস্ট্রাক্ট কোনো একক অক্ষর মিলে যায় ( .) শূন্য বা তার বেশি বার ( *)। প্রথম বন্ধনীতে এটি বন্ধ করে দেওয়া স্ট্রিংটি সরবরাহ করতে বলে যা was 1 ভেরিয়েবল হিসাবে মেলে।

RewriteRule ^/blog/.*/(.*)$  /newblog/$1

এই ক্ষেত্রে, প্রথম। * প্যারেন্সে আবদ্ধ ছিল না তাই পুনর্লিখিত স্ট্রিংয়ের জন্য সরবরাহ করা হয়নি। এই নিয়মটি নতুন ব্লগ-সাইটে ডিরেক্টরি স্তরটিকে সরিয়ে দেয়। (/blog/2009/sample.html /newblog/sample.html হয়ে যায়)।

RewriteRule ^/blog/(2008|2009)/(.*)$   /newblog/$2

এই ক্ষেত্রে, প্রথম বন্ধনীরূপের এক্সপ্রেশন একটি মিলে যাওয়া গ্রুপ সেট আপ করে। এটি $ 1 হয়ে যায়, যা প্রয়োজন হয় না এবং তাই পুনর্লিখিত স্ট্রিংয়ে ব্যবহৃত হয় না।

RewriteRule ^/blog/(2008|2009)/(.*)$   /newblog/$1/$2

এই ক্ষেত্রে, আমরা পুনর্লিখিত স্ট্রিংয়ে $ 1 ব্যবহার করি।

RewriteRule ^/blog/(20[0-9][0-9])/(.*)$   /newblog/$1/$2

এই নিয়মে একটি বিশেষ বন্ধনী বাক্য গঠন ব্যবহার করা হয়েছে যা একটি চরিত্রের সীমা নির্দিষ্ট করে । [0-9] 0 থেকে 9 পর্যন্ত সংখ্যার সাথে মেলে এই নির্দিষ্ট নিয়মটি 2000 থেকে 2099 সাল পর্যন্ত পরিচালনা করবে years

RewriteRule ^/blog/(20[0-9]{2})/(.*)$  /newblog/$1/$2

এটি পূর্ববর্তী নিয়মের মতো একই কাজ করে, তবে {2 it অংশটি এটি পূর্বের চরিত্রের (এই ক্ষেত্রে একটি বন্ধনী প্রকাশের) সাথে দুটি বারের সাথে মেলাতে বলে।

RewriteRule ^/blog/([0-9]{4})/([a-z]*)\.html   /newblog/$1/$2.shtml

এই কেসটি দ্বিতীয় মিলের এক্সপ্রেশনটিতে যে কোনও ছোট-অক্ষরের অক্ষরের সাথে মিলবে এবং যতটা অক্ষর পারে তার জন্য এটি করবে। \.কনস্ট্রাক্ট বলা হয়েছে যে সব প্রকৃত কাল, না বিশেষ অক্ষর এটা পূর্ববর্তী উদাহরণ রয়েছে যেমন সময়ের চিকিত্সা। যদিও ফাইল-নামটিতে ড্যাশ থাকলে তা ভেঙে যাবে।

RewriteRule ^/blog/([0-9]{4})/([-a-z]*)\.html  /newblog/$1/$2.shtml

এই ফাঁদে ফাইলগুলির নামগুলি এতে ড্যাশযুক্ত থাকে। যাইহোক, -বন্ধনী এক্সপ্রেশনগুলির একটি বিশেষ চরিত্র হিসাবে এটি প্রকাশের প্রথম চরিত্র হতে হবে ।

RewriteRule ^/blog/([0-9]{4})/([-0-9a-zA-Z]*)\.html   /newblog/$1/$2.shtml

এই সংস্করণটি ফাইলের নাম, অক্ষর বা -ফাইল-নামের অক্ষরের সাথে কোনও ফাইলের নাম আটকে দেয় । এইভাবে আপনি বন্ধনীর এক্সপ্রেশনতে একাধিক অক্ষর সেট নির্দিষ্ট করেন।


পুনর্লিখন রুল পতাকা

পুনর্লিখনের নিয়মগুলিতে থাকা পতাকাগুলির বেশ কয়েকটি বিশেষ অর্থ এবং ইউজক্যাস রয়েছে

RewriteRule ^/blog/([0-9]{4})/([-a-z]*).\html  /newblog/$1/$2.shtml  [L]

পতাকাটি [L]উপরের অভিব্যক্তিটির শেষে। একাধিক পতাকা ব্যবহার করা যেতে পারে, একটি কমা দ্বারা পৃথক। লিঙ্কযুক্ত ডকুমেন্টেশন প্রতিটি বর্ণনা করে তবে এখানে সে যাইহোক:

এল = শেষ। এটির সাথে মিলে গেলে পুনরায় লেখার প্রক্রিয়া বন্ধ করুন। অর্ডার গণনা!
সি = চেইন। পরবর্তী পুনর্লিখনের প্রক্রিয়া চালিয়ে যান। যদি এই নিয়মটি মেলে না, তবে পরবর্তী বিধি কার্যকর করা হবে না। এই সম্পর্কে আরও পরে।
= পরিবেশগত পরিবর্তনশীল সেট করুন। অ্যাপাচে বিভিন্ন পরিবেশগত ভেরিয়েবল রয়েছে যা ওয়েব-সার্ভারের আচরণকে প্রভাবিত করতে পারে।
= নিষিদ্ধ। যদি এই নিয়মটি মেলে তবে একটি 403-নিষিদ্ধ ত্রুটি প্রদান করে।
জি = গেছে এই নিয়মের সাথে মেলে যদি একটি 410-ত্রুটি ফিরে আসে।
এইচ = হ্যান্ডলার অনুরোধটিকে হ'ল এটি নির্দিষ্ট মাইম-টাইপ হিসাবে জোর করে।
এন = পরবর্তী নিয়মটিকে আবার শুরু করতে এবং পুনরায় মিল করতে বাধ্য করে। সাবধান হও! লুপগুলি ফলাফল করতে পারে।
এনসি = কোনও মামলা নেই। অনুমতিjpgজেপিজি এবং জেপিজি উভয়ই মেলে।
NE = কোন পালাতে হবে না। তাদের হেক্স-কোড সমতুল্যে বিশেষ অক্ষর (?? # এবং ইত্যাদি) এর পুনরায় লেখা রোধ করে।
এনএস = কোনও সাব-কোয়েস্ট নেই। আপনি যদি সার্ভার-সাইড-অন্তর্ভুক্ত ব্যবহার করেন তবে এটি অন্তর্ভুক্ত ফাইলগুলির সাথে ম্যাচগুলি আটকাবে।
পি = প্রক্সি। মোড_প্রক্সি দ্বারা নিয়ম পরিচালনা করতে বাধ্য করে। অন্যান্য সার্ভার থেকে স্বচ্ছভাবে সামগ্রী সরবরাহ করুন, কারণ আপনার ওয়েব-সার্ভার এটি এনেছে এবং এটি পুনরায় পরিবেশন করে। এটি একটি বিপজ্জনক পতাকা, একটি খারাপ লেখা হিসাবে এটি আপনার ওয়েব-সার্ভারকে একটি ওপেন-প্রক্সিতে পরিণত করবে এবং এটি খারাপ।
পিটি = পাস দিয়ে। রাইরাইটরুল ম্যাচিংয়ে অ্যাকাউন্টে উপন্যাসের বিবরণ গ্রহণ করুন।
কিউএসএ = কিউএসএপেন্ড। যখন আসল স্ট্রিংটিতে একটি কোয়েরি থাকে ( http://example.com/thing?asp=foo) পুনরায় লিখিত স্ট্রিংয়ে মূল ক্যোরিয় স্ট্রিং যুক্ত করুন। সাধারণত এটি ফেলে দেওয়া হবে। গতিশীল বিষয়বস্তুর জন্য গুরুত্বপূর্ণ।
আর = পুনর্নির্দেশ। নির্দিষ্ট URL এ একটি HTTP পুনর্নির্দেশ সরবরাহ করুন। যথাযথ পুনর্নির্দেশ কোড সরবরাহ করতে পারে [আর = 303]। এর সাথে খুব মিল RedirectMatch, যা দ্রুত এবং এটি সম্ভব হলে ব্যবহার করা উচিত।
এস = এড়িয়ে যান। এই নিয়মটি এড়িয়ে যান।
টি = টাইপ। প্রত্যাবর্তিত সামগ্রীর মাইম-প্রকার উল্লেখ করুন। AddTypeদিকনির্দেশনার সাথে খুব মিল ।

আপনি কি জানেন যে আমি এটি কীভাবে RewriteCondএকটি এবং কেবলমাত্র একটি নিয়মের জন্য প্রযোজ্য? ভাল, আপনি শৃঙ্খলাবদ্ধ হয়ে এটি কাছাকাছি পেতে পারেন।

RewriteEngine On
RewriteCond %{HTTP_REFERER}          ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.html        /blog/$1.sf.html     [C]
RewriteRule ^/blog/(.*)\.jpg         /blog/$1.sf.jpg

যেহেতু প্রথম পুনর্লিখনটিতে চেইন পতাকা রয়েছে, দ্বিতীয় পুনর্লিখন-বিধি কার্যকর হবে যখন প্রথমটি করবে যখন এটি পূর্ববর্তী রাইরাইটকন্ড নিয়মটি মিলে যায়। সহজ যদি আপাচি নিয়মিত-এক্সপ্রেশনগুলি আপনার মস্তিষ্ককে আঘাত করে। তবে, প্রথম বিভাগে আমি যে সমস্ত-ইন-ও-লাইন পদ্ধতিটি দেখছি সেটি অপ্টিমাইজেশনের দিক থেকে দ্রুত।

RewriteRule ^/blog/([0-9]{4})/([-0-9a-zA-Z]*)\.html   /newblog/$1/$2.shtml

পতাকাগুলির মাধ্যমে এটিকে আরও সহজ করা যায়:

RewriteRule ^/blog/([0-9]{4})/([-0-9a-z]*)\.html   /newblog/$1/$2.shtml   [NC]

এছাড়াও, কিছু পতাকাও রাইরাইটকন্ডে প্রয়োগ হয়। উল্লেখযোগ্যভাবে, NoCase।

RewriteCond %{HTTP_REFERER}        ^https?://serverfault\.com(/|$)     [NC]

"সার্ভারফল্ট.কম" মিলবে


9
সাবাশ. [ফিলার]
EEAA

3
খুব সুন্দর mod_rewriteএবং রেগেক্স প্রাইমার +1 টি।
স্টিভেন সোমবার

3
এটা জানা যে কখনও কখনও উপযোগী RewriteCondআসলে প্রক্রিয়াকৃত হয় পরেRewriteRule মিলেছে করা হয়। আপনি যে শীর্ষে বলছেন তার কাছাকাছি জায়গায় "পরে আরও কিছু" বলতে চাইবেন "রাইরাইটরন্ডের পূর্ববর্তী রাইরাইটরুল সেই এক নিয়মকে শর্তাধীন করতে বাধ্য করে।" আপনি উল্লেখ করতে পারেন যে রেজেক্সগুলি পার্ল-সামঞ্জস্যপূর্ণ নিয়মিত এক্সপ্রেশন। এছাড়াও "আপনার ..." রাইরাইট রুলইল এটি স্ট্রিং-স্টার্ট হিসাবে বিবেচনা করছে "
ডেনিস উইলিয়ামসন

2
RewriteRule ^/blog/.*/(.*)$ /newblog/$1প্রথম ডিরেক্টরি উপাদানটির সাথে মেলে না - পুনর্লিখনগুলি ডিফল্টরূপে লোভী। /.*/(.*) / 1 / (2) / এবং / 1/2/3/4/5 / (6) / উভয়ই মেলে, সুতরাং আপনার / / ^ /] * / কেবল প্রথম পাথের সাথে মেলে উপাদান.
এডাপ্ট্র

1
@ sysadmin1138, আমি মনে করি এই উত্তর ভাল কিন্তু এটা ভালো হতে পারেন যদি আপনি পতাকার ই, এন, এন, পি, পিটি, এবং S উদাহরণ উপর আরো সম্প্রসারিত কারণ সেই পতাকা সুস্পষ্ট নয় কিভাবে তারা কাজ ইত্যাদি
Pacerier

39

মোড_উরাইট বিধিগুলির মৌলিক বিন্যাস এবং কাঠামো কী?

আমি এই পয়েন্টগুলিতে sysadmin1138 এর দুর্দান্ত উত্তর স্থগিত করব।

নিয়মিত ভাবের কোন রূপ / গন্ধটির আমার দৃ solid়রূপে উপলব্ধি করা দরকার?

সিনট্যাক্স অর্ডার, সিনট্যাক্স ম্যাচিং / নিয়মিত এক্সপ্রেশন এবং সিউসাদমিন ১১৩৩ দ্বারা উল্লিখিত RewritRule পতাকাগুলি ছাড়াও, আমি বিশ্বাস করি যে এইচটিটিপি অনুরোধ শিরোনাম এবং অ্যাপাচের কনফিগারেশনের উপর ভিত্তি করে অ্যাডেচ এনভায়রনমেন্ট ভেরিয়েবলগুলি মোড_আর্রাইট প্রকাশ করে।

আমি মোড_আররাইটে উপলভ্য হতে পারে এমন ভেরিয়েবলের একটি বিস্তৃত তালিকার জন্য অ্যাসপাশের মোড_উরাইট ডিবাগ টিউটোরিয়ালটি সুপারিশ করব

পুনর্লিখনের নিয়ম লেখার সময় সর্বাধিক সাধারণ ভুল / সমস্যাগুলি কী কী?

পিসিআরই সিনট্যাক্সের ভুল বোঝাবুঝি / ম্যাচিংয়ের জন্য ব্যবহৃত ভেরিয়েবল (গুলি) এর সামগ্রীতে অন্তর্দৃষ্টি না থাকায় যথাযথভাবে অক্ষর থেকে বাঁচতে না পেরে RewritRule এর স্টেমের বেশিরভাগ সমস্যা।

সাধারণ সমস্যা এবং প্রস্তাবিত সমস্যা সমাধান:

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

মোড_উরাইট বিধি পরীক্ষা ও যাচাই করার জন্য একটি ভাল পদ্ধতি কী?

প্রথমত, আপনি যে পরিবেশের পরিবর্তনশীল (গুলি) এর সাথে মেলে যাবেন তার সামগ্রীর বিষয়গুলি দেখুন - আপনি যদি পিএইচপি ইনস্টল করেন তবে এটি আপনার অ্যাপ্লিকেশনটিতে নিম্নলিখিত ব্লকটি যুক্ত করার মতোই সহজ:

<?php
  var_dump($_SERVER);
?>

... তারপরে আপনার নিয়মগুলি লিখুন (অগ্রাধিকার হিসাবে কোনও ডেভলপমেন্ট সার্ভারে পরীক্ষার জন্য) এবং আপনার অ্যাপাচি ত্রুটিযুক্ত ফাইলটিতে কোনও অসামঞ্জস্য ম্যাচিং বা ক্রিয়াকলাপ নোট করুন।

আরও জটিল নিয়মের জন্য, RewriteLogকোনও ফাইল এবং সেটটিতে লগ কার্যকলাপের জন্য মোড_উইরাইটের নির্দেশিকা ব্যবহার করুনRewriteLogLevel 3

আমার কি সচেতন হওয়া উচিত মোড_আরাইটের নিয়মের এসইও বা পারফরম্যান্সের প্রভাবগুলি?

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

গুগলের ওয়েবমাস্টার গাইডলাইনস স্পষ্টভাবে জানিয়েছে: "ব্যবহারকারীদের কাছে প্রদর্শন করার চেয়ে আপনার ব্যবহারকারীকে প্রতারণা করবেন না বা অনুসন্ধান সামগ্রীগুলিতে বিভিন্ন সামগ্রী উপস্থাপন করবেন না, যা সাধারণত 'ক্লোয়াকিং' হিসাবে পরিচিত" "- অনুসন্ধানের ইঞ্জিনের রোবটগুলির জন্য ফিল্টারকারী মোড_আরাইটের নির্দেশিকা তৈরি করা এড়ান।"

অনুসন্ধান ইঞ্জিন রোবটগুলি 1: 1 সামগ্রী পছন্দ করে: ইউআরআই ম্যাপিং (এটি সামগ্রীতে লিঙ্কের লিঙ্কের ভিত্তি) - যদি আপনি অস্থায়ী পুনঃনির্দেশগুলি তৈরি করতে মোড_উইরাইট ব্যবহার করছেন বা আপনি একাধিক ইউআরআইয়ের অধীনে একই বিষয়বস্তুটি পরিবেশন করছেন, তবে এর মধ্যে একটি ক্যানোনিকাল ইউআরআই নির্দিষ্ট করে বিবেচনা করুন আপনার এইচটিএমএল নথি।

এমন কি সাধারণ পরিস্থিতি রয়েছে যেখানে মোড_ব্রাইটটি কাজের জন্য সঠিক উপকরণ হিসাবে মনে হতে পারে তবে তা নয়?

কেস-বাই-কেস ভিত্তিতে ব্যবহারগুলি সম্বোধন করার জন্য এটি তার নিজস্ব ডান - এবং আরও ভাল (আইএমএইচও) একটি বৃহত (এবং সম্ভাব্য বিতর্কিত) বিষয়, এবং প্রস্তাবিত প্রস্তাবগুলি তাদের প্রয়োজনের জন্য উপযুক্ত কিনা তা নির্ধারণ করতে দিন।

কিছু সাধারণ উদাহরণ কি কি?

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


AskApache লিঙ্কের জন্য ধন্যবাদ। এটি আমি যা খুঁজছিলাম!
sica07

আস্কএপাচে ক্লাউনটি আনুষ্ঠানিকভাবে এএসএফ দ্বারা অসমর্থিত। তিনি যা বলেন তার বেশিরভাগই বিতর্কযোগ্য বা সাধারণ ভুল।
অ্যাডাপ্টার

@ অ্যাডাপ্ট্রি দয়া করে উচ্চতর সংস্থানগুলি ভাগ করুন যা সম্পর্কে আপনি স্পষ্টতই অবগত।
ড্যান্লেফ্রি

"সাধারণ পরিস্থিতি যেখানে মোড_ব্রাইটটি কাজের জন্য সঠিক উপকরণ হিসাবে মনে হতে পারে তবে তা নয়?" - সরল পুনর্নির্দেশগুলি, যেখানে মোড_আররাইট ইতিমধ্যে ব্যবহৃত হচ্ছে না। মোড_লিয়াস Redirectবা RedirectMatchতার পরিবর্তে ব্যবহার করুন । অ্যাপাচি ডক্সগুলিও দেখুন:
মোড_উইরাইট

21

অনেক অ্যাডমিন / বিকাশকারীদের মতো আমি বছরের পর বছর ধরে পুনর্লিখনের নিয়মগুলির জটিলতার সাথে লড়াই করছি এবং বিদ্যমান অ্যাপাচি ডকুমেন্টেশন থেকে অসন্তুষ্ট, তাই আমি কীভাবে একটি ব্যক্তিগত প্রকল্প হিসাবে সিদ্ধান্ত নিয়েছিলাম যে কীভাবে mod_rewriteবাস্তবে কাজ করে এবং বাকী অ্যাপাচে কীভাবে যোগাযোগ করে তার তলদেশে পৌঁছতে? মূল, তাই গত কয়েক মাস ধরে আমি straceএই সমস্তটির উপর একটি হ্যান্ডেল পেতে সোর্স কোডে + ড্রিল দিয়ে পরীক্ষার কেসগুলি প্রস্তুত করছি।

নিয়ম বিকাশকারীদের পুনর্লিখনের জন্য এখানে কিছু মূল মন্তব্য দেওয়া উচিত:

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

আমি যত তাড়াতাড়ি বলতে চাই যে এজন্য আপনাকে প্রায় পুনরায় লেখক ব্যবহারকারী সম্প্রদায়গুলিকে দুটি বিভাগে বিভক্ত করা এবং তাদের সম্পূর্ণ পৃথক হিসাবে গণ্য করতে হবে:

  • অ্যাপাচি কনফিগারেশনে রুট অ্যাক্সেস পাওয়া লোকেরা । এগুলি সাধারণত অ্যাপ্লিকেশন ডেডিকেটেড সার্ভার / ভিএম সহ অ্যাডমিন / বিকাশকারী এবং এখানে বার্তাটি বেশ সহজ: .htaccessযদি সম্ভব হয় তবে ফাইলগুলি ব্যবহার করা এড়াতে ; আপনার সার্ভার বা vhost কনফিগারেশনে সবকিছু করুন। বিকাশকারী ডিবাগিং সেট করতে পারে এবং পুনর্লিখন.লগ ফাইলগুলিতে অ্যাক্সেস থাকায় ডিবাগিং যুক্তিসঙ্গত সহজ।

  • একটি শেয়ার্ড হোস্টেড পরিষেবার (SHS) ব্যবহারকারীরা

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

সম্ভবত তৃতীয় একটি সম্প্রদায় রয়েছে: এসএইচএস সরবরাহকারীদের প্রশাসক এবং সহায়তা কর্মীরা যারা উভয় শিবিরে একটি পা দিয়ে শেষ হন এবং উপরের ফলাফলগুলি ভোগ করতে হয়।

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

তবে অ্যাডমিন সম্প্রদায়ের .htaccessব্যবহারকারীদের কীভাবে সমর্থন করা উচিত তার পরিপ্রেক্ষিতে আমি অনুভব করি যে আমাদের বিকাশ করা এবং অফার করা দরকার:

  • পুনর্লিখনের সিস্টেমটি আসলে পেরডির প্রসেসিংয়ে কীভাবে কাজ করে তার একটি সুসংগত বর্ণনা
  • .htaccessপুনর্লিখনের নিয়ম কীভাবে লিখতে হয় সে সম্পর্কে গাইডলাইন / সেরা অনুশীলনের একটি সেট
  • ডাব্লু 3 সি এইচটিএমএল পার্সারের অনুরূপ একটি সাধারণ ওয়েব ভিত্তিক পুনর্লিখনের স্ক্রিপ্ট পার্সার বাছাই, তবে যার মাধ্যমে ব্যবহারকারীরা ইউআরআই পরীক্ষা করতে পারে বা এর পরীক্ষক ভেক্টরগুলির পরীক্ষা করতে পারে এবং পুনর্লিখনের লজিক প্রবাহের তাত্ক্ষণিক লগ পেতে পারে /
  • আপনার নিয়মগুলি থেকে বিল্ট-ইন ডায়াগনস্টিকগুলি কীভাবে পাবেন সে সম্পর্কে ইঙ্গিতগুলি (যেমন:

    • লক্ষ্য স্ক্রিপ্টে ডায়াগনস্টিক হিসাবে তাদের উপলভ্য করতে ব্যাকরিফারেন্সগুলি ($ N বা% N) প্রসারিত করবে [E=VAR:EXPR]এই সত্যটি কাজে EXPRলাগিয়ে ব্যবহার করুন ।
    • যদি আপনি [ওআর], [সি], [এসকেআইপি] এবং [এল] পতাকা ব্যবহার করে আপনার পুনর্লিখনের নিয়মগুলি শীর্ষভাবে অর্ডার করেন যাতে পুরো পুনর্লিখনের স্কিমটি অভ্যন্তরীণ পুনঃনির্দেশকে কাজে লাগানোর প্রয়োজন ছাড়াই কাজ করে, তবে আপনি এড়াতে নিয়ম 1 হিসাবে নিম্নলিখিতটি যুক্ত করতে পারেন সমস্ত লুপিং ঝামেলা:

      RewriteCond %{ENV:REDIRECT_STATUS} !=""
      RewriteRule .  -  [L]
      

এটি ভালভাবে নথিভুক্ত করা হয়। আপনি কেন বলছেন যে ডকুমেন্টেশনগুলি এটি ব্যাখ্যা করে না?
এডাপ্ট্র

2
আপনাকে যা করতে হবে তা হ'ল .htaccessবিষয়গুলিতে সাবস্ক্রাইব করা এবং আপনি দেখতে পাবেন। বেশিরভাগ শিক্ষানবিশ আশাহীনভাবে বিভ্রান্ত হয় - এদের বেশিরভাগের একটি ল্যাম্প পরিষেবাদির প্রথম অভিজ্ঞতা এবং একটি ভাগ করা পরিষেবাদিতে mod_rewrite রয়েছে এবং সুতরাং সিস্টেম / vhost কনফিগারেশনে কোনও রুট অ্যাক্সেস নেই এবং .htaccessফাইলগুলির মাধ্যমে প্রতি ডায়ার প্রসেসিংয়ে তাদের ব্যবহার করতে হয়। গুরুত্বপূর্ণ পার্থক্য রয়েছে যা প্রাথমিকভাবে "রক্তক্ষরণ" করতে হয়। আমি নিজেকে শক্তি-ব্যবহারকারী হিসাবে বিবেচনা করব এবং এখনও সূক্ষ্মতা আবিষ্কার করছি। যেমনটি আমি বলি আমাকে কিছু দিকগুলি বের করার জন্য স্ট্রেস এবং সোর্স কোড স্ক্যানিং ব্যবহার করতে হবে S প্রয়োজন হবে না। :-(
টেরি

আমি সম্পূর্ণভাবে রাজী. "আমাদের পুনর্লিখনকারী ব্যবহারকারী সম্প্রদায়গুলিকে দুটি বিভাগে বিভক্ত করতে হবে এবং তাদের সম্পূর্ণ পৃথক হিসাবে গণ্য করতে হবে।" কিছু ব্যবহারকারী ভাগ করা হোস্টিং ব্যবহার করছেন এবং এটি নির্ভর করা দরকার.htaccess যা বিশেষজ্ঞের জন্য ভয়ানকভাবে ভঙ্গুর, জটিল এবং বিভ্রান্তিকর। আমি এখনও সমস্যা হচ্ছে।
রায়ান

15

পুনর্লিখনের ব্যবহার

পুনর্লিখনের মাধ্যমে আপনি করতে পারেন এমন অনেকগুলি জিনিস রয়েছে। পুনর্লিখনগুলি পুনর্লিখনের নির্দেশিকা ব্যবহার করে ঘোষিত হয় এবং তারপরে পুনরায় রাইন্ডকন্ড মূল্যায়ণ এবং পুনর্লিখন রুল সাবস্কিপশন উভয়ই ব্যবহার করা যায়।

রিরাইটর্যাপের জন্য সাধারণ বাক্য গঠনটি হ'ল:

RewriteMap MapName MapType:MapSource

উদাহরণ স্বরূপ:

RewriteMap examplemap txt:/path/to/file/map.txt

তারপরে আপনি এই জাতীয় নির্মাণের জন্য মানচিত্রের নাম ব্যবহার করতে পারেন:

${examplemap:key}

মানচিত্রে কী / মান জোড়া রয়েছে। কীটি পাওয়া গেলে মানটি সাবস্কিটেড হয়। সাধারণ মানচিত্রগুলি কেবল সরল পাঠ্য ফাইল, তবে আপনি হ্যাশ মানচিত্র এবং এমনকি এসকিউএল অনুসন্ধানগুলিও ব্যবহার করতে পারেন। আরও বিশদ ডক্সে রয়েছে:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap

আনসকেপিং স্ট্রিং।

কয়েকটি হেরফের করতে আপনি চারটি অভ্যন্তরীণ মানচিত্র ব্যবহার করতে পারেন। বিশেষত অনাকাঙ্ক্ষিত স্ট্রিংগুলি কাজে আসতে পারে।

উদাহরণস্বরূপ: আমি ক্যোরি স্ট্রিংয়ের "ক্যাফে" স্ট্রিংয়ের জন্য পরীক্ষা করতে চাই। যাইহোক, ব্রাউজারটি এটি আমার সার্ভারে প্রেরণের আগে এড়াতে সক্ষম হবে, সুতরাং আমি যে URL টির সাথে মিলে যেতে চাইছি তার জন্য ইউআরএল থেকে বেরিয়ে যাওয়া সংস্করণটি কী তা খুঁজে বের করতে হবে, বা আমি কেবল এটি মুক্ত করতে পারি ...

RewriteMap unescape int:unescape

RewriteCond %{QUERY_STRING}  (location|place)=(.*)
RewriteCond ${unescape:%2}   café
RewriteRule ^/find/$         /find/1234? [L,R]

আমি কীভাবে কীভাবে একটি পুনর্লিখনক ব্যবহার করি তা সন্ধান করার জন্য কীভাবে স্ট্রিং প্যারামিটারটি কেবলমাত্র যুক্তিটি ক্যাপচার করে, এবং তারপরে এটি পুনরায় ছাড়ানোর জন্য দ্বিতীয় পুনর্লিখনকন্ডে মানচিত্রটি ব্যবহার করুন। এটি তখন তুলনা করা হয়। পুনর্লিখনের কী হিসাবে কীভাবে আমাদের% 2 আমাদের প্রয়োজন তাও নোট করুন, কারণ% 1 তে "অবস্থান" বা "স্থান" থাকবে। আপনি যখন গ্রুপ প্যাটার্নগুলিতে প্রথম বন্ধনী ব্যবহার করেন সেগুলিও ক্যাপচার করা হবে, তবে আপনি ক্যাপচারের ফলাফলটি ব্যবহার করার পরিকল্পনা করছেন বা না ...


শেষ বাক্যটি বেশ সত্য নয়। mod_rewriteRegexp ইঞ্জিন যেমন অ ক্যাপচার গ্রুপ সমর্থন (?:location|place)এবং এই শুধুমাত্র উদাহরণে এক ক্যাপচার থাকবে।
টেরি

12

পুনর্লিখনের নিয়ম লেখার সময় সর্বাধিক সাধারণ ভুল / সমস্যাগুলি কী কী?

সত্যিই সহজ ক্ষতি হ'ল আপনি যখন ইউআরএলগুলি পুনরায় লেখেন যা আপাত পথকে পরিবর্তিত করে, যেমন থেকে শুরু /base/1234/index.htmlকরে /base/script.php?id=1234। স্ক্রিপ্টের অবস্থানের সাথে সম্পর্কিত কোনও চিত্র বা সিএসএস ক্লায়েন্টের দ্বারা পাওয়া যাবে না not এটি সমাধানের জন্য বেশ কয়েকটি বিকল্প এই FAQ এ পাওয়া যাবে ।


1
লিঙ্কের জন্য ধন্যবাদ। বিশেষত অন্য দলের সদস্যদের সাথে কাজ করার সময় যারা পুনরায় লেখার সাথে পরিচিত নয়, আমি <base>অনুসরণ করতে সবচেয়ে সহজ হতে পারে এবং এখনও আপেক্ষিক পাথ সক্ষম করতে একটি ট্যাগ যুক্ত দেখতে পাই ।
কনটুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.