.htaccess mod_rewrite - কীভাবে পুনর্লিখনের নিয়ম থেকে ডিরেক্টরিকে বাদ দেওয়া যায়


145

আমার .htaccess ফাইলে পুনরায় লেখার নিয়মের 8 টি লাইন রয়েছে। এই নিয়মগুলি থেকে আমার সার্ভারে দুটি শারীরিক ডিরেক্টরি বাদ দিতে হবে, যাতে তারা অ্যাক্সেসযোগ্য হয়ে উঠতে পারে। আপাতত সমস্ত অনুরোধগুলি index.php ফাইলে প্রেরণ করা হয়।

বাদ দেওয়ার জন্য নির্দেশিকা: "প্রশাসক" এবং "ব্যবহারকারী"।

সুতরাং HTTP অনুরোধ: http://www.domain.com/admin/ কে সূচি.পিএফ ফাইলে পাস করা উচিত নয়।

ErrorDocument 404 /index.php?mod=error404

Options  FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L]
RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]

আমি মনে করি আপনি কোয়ান্টিফায়ারগুলিকে ভুলে গেছেন [^/]যেহেতু সেখানে কোনও সরল স্থানের অনুমতি না দেওয়া থাকলে (এটি অবশ্যই পালাতে হবে \<space>)।
গম্বো

সত্যিকারের গাম্বো, ভাল ক্যাচ :)। এটি ^ ([^ /] +) হওয়া উচিত।
কেলভিন 21

উত্তর:


287

আপনার অন্যান্য নিয়মের আগে এই নিয়মটি ব্যবহার করে দেখুন:

RewriteRule ^(admin|user)($|/) - [L]

এটি পুনর্লিখনের প্রক্রিয়াটি শেষ করবে।


হ্যালো গম্বো, আপনার কোড যদি ব্যবহারকারী টাইপ করে ডোমেইন / অ্যাডমিন / (শেষ স্ল্যাশ সহ) তবে তা না থাকলে কাজ করে। উভয় ক্ষেত্রে কাজ করার জন্য আপনি কী পরিবর্তন করতে পারেন? ধন্যবাদ
কেলভিন

@ কেলভিন: এই বিকল্পটি ($|/)উভয় ক্ষেত্রেই পরিচালনা করা উচিত।
গম্বো

এখানে রাইরাইটরুলের পরিবর্তে রাইরাইটকন্ড ব্যবহার করা কি ভাল না?
রিনিজে

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

3
@ এজেক এর অর্থ "কিছু পরিবর্তন করবেন না"।
গম্বো

112

আপনি যা করতে পারেন তা হ'ল একটি htaccess ফাইলযুক্ত ফাইল রাখুন

RewriteEngine Off

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


18
+1 h .htaccess ক্রমবর্ধমানভাবে পরিচালনা করে, তাই স্থানীয় ফোল্ডারগুলি সিএসএস বা এমভিসিতে একটি সাধারণ ক্যাসকেডের মতোই তাদের পিতামাতাকে ওভাররাইড করে।
আটারি

4
আপনার মনে রাখা উচিত কেবল একটি জিনিস: .htaccess ফাইলগুলি সক্রিয় করা (অ্যাপাচি কনফিগারেশন AllowOverrideব্যতীত অন্য কোনও কিছুতে সেট করা None) প্রতিটি অনুরোধে .htaccess অনুসন্ধান করতে অ্যাপাচিকে বাধ্য করে। সুতরাং আপনার কাছে যদি একটি উচ্চ ঘন ঘন ওয়েবসাইট / ওয়েবসার থাকে যা ফাইলসিস্টেম / হার্ডডিস্ক অ্যাক্সেসের একটি দ্বৈত কর্মক্ষমতা প্রভাব ফেলতে পারে ...
বোহর্স্টি

ফাইল পদ্ধতির মাধ্যমে এসএসএল শংসাপত্রগুলির পুনর্নবীকরণ বৈধ করার জন্য নিখুঁত পরামর্শ। অস্থায়ী ডিরেক্টরিগুলির বাইরে বা vhost ফাইলে কোনও কিছু সংশোধন করার দরকার নেই। বৈধতা হয়ে গেলে, আপনি কেবল পুরো ফোল্ডারটি মুছতে পারেন এবং আপনার কাজ শেষ। শুধু মহান.
কাউন্টজারো

25

প্রশাসক ডিরেক্টরি যাচাই করার জন্য একটি শর্ত যুক্ত করুন:

RewriteCond %{REQUEST_URI} !^/?(admin|user)/
RewriteRule ^([^/] )/([^/] )\.html$ index.php?lang=$1&mod=$2 [L]

RewriteCond %{REQUEST_URI} !^/?(admin|user)/
RewriteRule ^([^/] )/$ index.php?lang=$1&mod=home [L]

হ্যালো রব, আমি এই রেখাটি "রাইরাইটবেস /" এর ঠিক পরে রেখেছি এবং এখন আমি "500 ত্রুটি - অভ্যন্তরীণ সার্ভার ত্রুটি" পাচ্ছি
কেলভিন

@ ক্যালভিন আমি আমার উত্তর সম্পাদনা করেছি, আপনি যে নিয়মটি প্রয়োগ করতে চান তার আগে শর্ত যুক্ত করুন।
রব

এই একজনই ছিলেন যা আসলে আমাকে সাহায্য করেছিল। গৃহীত উত্তর হয়নি না আমাকে সাহায্য করো।
উওয়ে কেইম

5

আপনি যদি নিয়ম থেকে কোনও নির্দিষ্ট ডিরেক্টরি মুছে ফেলতে চান (অর্থাত্ আপনি ডিরেক্টরি foo মুছে ফেলতে চান ), আপনি ব্যবহার করতে পারেন:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/foo/$
RewriteRule !index\.php$ /index.php [L]

উপরের রাইরাইটরুল / / foo / এর অনুরোধগুলি বাদ দিয়ে সমস্ত প্রয়োজনীয়তা /index.php এ পুনর্লিখন করবে ।

সমস্ত বিদ্যমান ডিরেক্টরি বাদ দিতে, আপনার নিয়মের উপরে নিম্নলিখিত শর্তটি ব্যবহার করতে হবে:

RewriteCond %{REQUEST_FILENAME} !-d

নিম্নলিখিত নিয়ম

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !index\.php$ /index.php [L]

/index.php- এ সমস্ত কিছু (ডিরেক্টরি ব্যতীত) পুনর্লিখন করে ।


5

আমরা নিম্নলিখিত মোড_আরাইট রুলটি ব্যবহার করেছি:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/test/
RewriteCond %{REQUEST_URI} !^/my-folder/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

/ টেস্ট এবং / আমার-ফোল্ডার ডিরেক্টরিগুলির রিসোর্সের অনুরোধ ব্যতীত এই সাইটটিতে সমস্ত ট্র্যাফিক http: //www.newdomain.com- এ (স্থায়ীভাবে 301 পুনর্নির্দেশের সাহায্যে) পুনঃনির্দেশ করে । আমরা (। *) ক্যাপচার গ্রুপটি ব্যবহার করে এবং তারপরে নতুন ইউআরএলে $ 1 অন্তর্ভুক্ত করে তাদের অনুরোধ করা সঠিক সংস্থানটিতে ব্যবহারকারীকে স্থানান্তর করি। জায়গা ফাঁকা মনে।


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