এইচটিসেসের নিয়মটি বের করা যায় না


9

আমার এইচটিএক্সেসে এটি আছে তবে এটির জন্য কী তা নির্ধারণ করতে পারছি না। নিয়মের প্রকৃতির কারণে অনুসন্ধানে কোনও লাভ হয় না।

RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

কেউ দয়া করে এটি কি জন্য ব্যাখ্যা করতে পারেন?


যদি অনুরোধের অংশটি (".কম" এর পরে URL এর অংশ) এর সাথে শেষ হয় না /এবং এতে একটি " ." থাকে না , তবে অনুরোধটি এটি দিয়ে যুক্ত করে পুনঃনির্দেশ করুন /। এই নিয়মের সম্ভাব্য উদ্দেশ্যটি হ'ল স্বয়ংক্রিয় ডিরেক্টরি সূচকটি পরিচালনা করা।
পিটারহ - মনিকা পুনরায় ইনস্টল করুন

উত্তর:


11

সকল এই নিয়ম করে একটি trailing যোগ হয় /আপনার URL গুলিতে কোন লোক না এবং যদি কোন .কোনো URI, তাই https://example.org/testথেকে আপনাকে পুনঃনির্দেশিত করা হবে https://example.org/test/, কিন্তু https://example.org/test.htmlকরতে পুনর্লিখিত করা হইনি https://example.org/test.html/(কিন্তু মনে রাখবেন: https://example.org/test.case/folderএছাড়াও হবে না থেকে আপনাকে পুনঃনির্দেশিত করা https://example.org/test.case/folder/যেমন রয়েছে একটি .ইউআরআই)।

## Do the following if the URI does not end with `/` or  does not contain an `.`: 
## the . is relevant for file names like test.html, which should n 
RewriteCond %{REQUEST_URI} !(/$|\.)

## Redirect it to the original URI with an added `/` and mark this as permanent:
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

" /test.case/folderএছাড়াও পুনর্নির্দেশ করা হবে না" - মাইনর পয়েন্ট, তবে "ফোল্ডার" যদি একটি ফাইল সিস্টেম ডিরেক্টরি হয়, তবে মোড_ডির একটি 301 পুনর্নির্দেশ ইস্যু করে একটি ট্রেলিং স্ল্যাশ যুক্ত করতে পারে। এটি কেবল তখনই সমস্যা যদি এটির /test.case/some-other-virtual-urlপিছনে স্ল্যাশ হওয়া উচিত।
মিঃহাইট

6

বৈধতা না দিয়ে, তবে অ্যাপাচি পুনর্লিখনে আমার অভিজ্ঞতা ব্যবহার করে এই কনফিগারেশনটি মনে হয়:

  1. ইউআরআইয়ের 'পাথ' অংশের সাথে ম্যাচ করুন (সার্ভার, পোর্ট বা কোয়েরি প্যারামিটার নয়), উদাহরণস্বরূপ '/my/location/file.html'।
  2. এই অংশটি '/' (ফরোয়ার্ড-স্ল্যাশ) অক্ষরে না শেষ হলে মিল করুন, -ও- এ 'অন্তর্ভুক্ত করে না।' (বিন্দু) অক্ষর।
  3. ইউআরআইয়ের পুরো পাথ অংশটি ব্যবহার করুন এবং এতে ফরোয়ার্ড-স্ল্যাশ যুক্ত করুন।
  4. ব্রাউজারটিকে এই নতুন ইউআরআইতে পরিচালনা করতে একটি HTTP 301 (স্থায়ী) পুনর্নির্দেশ করুন।

এটি নিম্নলিখিত পরীক্ষার ক্ষেত্রে ফলাফল দেবে

/ -> / /test -> /test/ /my/resource -> /my/resource/ /my/resource.type -> /my/resource.type /edge.case/resource -> /edge.case/resource

সুতরাং আমি মনে করি যে এই নিয়মের একটি সংস্থান আছে যেগুলি সংস্থানগুলিতে ফাইলগুলি বলে মনে হয় না, তবে এটি প্রান্ত-কেস বলে মনে হয় sla

যদি '' দিয়ে কোনও সংস্থানে স্ল্যাশ যোগ না করে। (বিন্দু) পাথের নন-ফাইল অংশের চরিত্রটিকে নিয়মিত প্রকাশটি পরিবর্তন করতে হবে:

# match paths which do not end with a slash, or do not resemble a file with an extension
RewriteCond %{REQUEST_URI} !(/$|\.[^/]+$)
# redirect permanently to the same uri with a slash
RewriteRule (.*) %{REQUEST_URI}/ [R=301]

!(\/$|\.[^\/]*)- আপনার আপডেট করা রেজেক্সটি আসলে আলাদা নয়। আপনার পাশাপাশি ২ য় অংশে (যেটি এক্সটেনশনের সাথে মেলে) স্ট্রিংয়ের একটি অ্যাঙ্কর দরকার। সম্ভবত এর মতো কিছু: !(/|\.[a-zA-Z]+)$(স্ল্যাশগুলি থেকে বাঁচার দরকার নেই)।
মিঃহাইট

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