আমি কীভাবে আমার .htaccess ফাইলে ইউআরএল পুনর্লিখন বাস্তবায়ন করব?


17

আমি কিছু ইউআরএল পুনর্লিখন করতে চাই (কেন? এই প্রশ্নটি দেখুন )) যাতে ব্যবহারকারীদের পরিবর্তে ঠিকানাগুলি দেখা হয়

labouseur.com/course-compilers.html 

তারা পরিবর্তে সহজেই দেখতে এবং ব্যবহার করতে পারে

labouseur.com/course-compilers

(আরও ভাল, সম্ভবত আমার এটির পুনর্গঠন করা উচিত যাতে এটি কোর্স / সংকলক হয়))

আমি আমার ওয়েবসাইটের জন্য একটি লিনাক্স-ভিত্তিক শেয়ার্ড হোস্টিং পরিষেবা ব্যবহার করছি, সুতরাং আমার সার্ভারের প্রশাসনিক নিয়ন্ত্রণ নেই, তবে .htaccess এ আমার নিয়ন্ত্রণ রয়েছে। আমি অনলাইনে যে রেফারেন্সগুলি পড়েছি তা আমার কাছে পরিষ্কারের চেয়ে কম মনে হয়েছিল, তাই আমি এখানে একটু স্পষ্টতা এবং পরামর্শ খুঁজছি।


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

উত্তর:


13

আপনি প্রকৃতপক্ষে আপনার সার্ভারের ফাইলগুলি থেকে এইচটিএমএল সরাতে এবং htaccess এ সেটিংস সেট করতে পারেন যাতে তারা এইচটিএমএল ফাইল হিসাবে পরিবেশন করতে পারে তবে সম্ভবত আপনি যা খুঁজছেন তা তা নয়।

এটা কর :

RewriteEngine on
# Check this condition to ensure that it's not a directory.
RewriteCond %{REQUEST_FILENAME} !-d
# Check this condition to ensure that there's a file there
RewriteCond %{REQUEST_FILENAME}\.html -f
# Replace html with your file extension, eg: php, htm, asp
RewriteRule ^(.*)$ $1.html

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

3

প্রথমে নিশ্চিত হোন যে অ্যাপাচে মডিউল রয়েছে এবং এটি .htacces ফাইলগুলিতে অনুমোদিত, তারপরে যুক্ত করুন:

RewriteEngine on

# Rewrite rules
RewriteRule ^/myoldsubfolder/(.*) /newfolder/$1 

আপনার উদাহরণ প্রয়োজন হবে

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI}\.html -f
RewriteRule ^/(([a-zA-Z0-9_]+)/?)$ /$1.html

একটি একক স্তরের ডিরেক্টরি কাঠামোর জন্য এবং

RewriteRule ^/(([a-zA-Z0-9_]+)/?)+$ /$1.html

বহু স্তরের কাঠামোর জন্য।

তবে সাবধান!

আপনার যদি কাঠামো থাকে

/site/.htaccess
/site/subfolder/.htaccess
/site/subfolder/cats/.htaccess

চাইল্ড .htaccessফাইলগুলিতে পুনর্লিখনের নিয়মগুলি তাদের প্যারেন্ট ফোল্ডারের সাথে সম্পর্কিত হবে এবং আপনি কিছু অগোছালো পুনর্লিখনের লুপ পরিস্থিতিতে পড়তে পারেন । আপনি RewriteCondযদি পারেন তবে সেগুলি বন্ধ করতে আপনি ব্যবহার করেছেন তা নিশ্চিত করুন !


আপনি কি শেষ পয়েন্টটি (লুপগুলি থামানোর জন্য রিউরাইটকন্ড ব্যবহার করে) আরও বিশদে যেতে চান?
ট্র্যাভিস নর্থকুট

2

উপরের উত্তর ছাড়াও যে কেউ ব্যবহার করতে পারেন

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([\w-]+)$ $1.html [L]

([\w-]+) হাইফেন (-) সহ অক্ষর, অঙ্কগুলিকে অনুমতি দেয়।

(.*) নির্বিশেষে প্রতিটি অনুরোধ পুনর্লিখন করবে, যা অ্যাক্সেসে অভ্যন্তরীণ সার্ভারের ত্রুটির কারণে নিম্নোক্ত অন্যান্য নিয়ম নীতিহীন হতে পারে।


আপনার RewriteRule প্যাটার্নটি প্রশ্নের নির্দিষ্ট উদাহরণের জন্য গৃহীত উত্তরের চেয়ে উন্নতি, তবে, যখন একাধিক পথ বিভাগ রয়েছে, তখন এটি আরও সাধারণ ক্ষেত্রে মেলে না। /path/to/course-compilersLনিম্নলিখিত নিয়মগুলির উপর প্রভাব কমাতে পতাকা অন্তর্ভুক্ত করুন । (.*)প্যাটার্নটি অপ্রয়োজনীয়ভাবে সাধারণ হলেও, ফাইলটি যাচাই করে এমন অবস্থায় থাকার কারণে এটি গুরুতর সমস্যার কারণ হতে পারে না।
মিঃউইট

1

এটি সম্পাদন করতে আপনাকে .htaccess ফাইল ব্যবহার করতে হবে না। কেবলমাত্র আপনার ফাইলগুলি ডিরেক্টরিগুলিতে কাঠামো করুন এবং "Labouseur.com/course-compilers.html" ব্যবহারের পরিবর্তে কেবল ফাইলের সূচক html নাম দিন এবং এটি "কোর্স-সংকলক" নামে একটি ডিরেক্টরিতে রেখে দিন। তারপরে আপনি যখন সেই ডিরেক্টরিটির দিকে নির্দেশ করেন তখন সূচকটি ডিফল্টরূপে পরিবেশন করা হয় তবে URL এ প্রদর্শিত হবে না not সুতরাং আপনি কেবল নিজের লিঙ্কগুলিকে "Labourseur.com/course-compilers" হিসাবে লিখতে পারেন এবং সব কিছু ঠিকঠাক হবে।

কোন .htaccess প্রয়োজন।

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