কীভাবে ডিবাগ করবেন .htaccess RewritRule কাজ করছে না


115

আমার RewriteRuleএকটি .htaccessফাইল রয়েছে যা কিছুই করছে না। আমি কীভাবে এটির সমস্যা সমাধান করব?

  • .htaccessফাইলটি যদি আপাচে পড়েও এবং মানা করা হয় তবে আমি কীভাবে যাচাই করতে পারি ? আমি কী "এটি কাজ করছে" বার্তাটি একটি ইকো লিখতে পারি, যদি আমি এটি লিখি তবে সেই লাইনটি কোথায় প্রতিধ্বনিত হবে?
  • যদি .htaccessফাইলটি ব্যবহার না করা হয় তবে আমি কীভাবে এপাচি এটি ব্যবহার করতে পারি?
  • যদি এটি .htaccessব্যবহার করা হচ্ছে তবে আমার RewriteRuleএখনও কার্যকর হচ্ছে না, ডিবাগ করার জন্য আমি আরও কী করতে পারি?

উত্তর:


144

আপনার .htaccess উদাহরণস্বরূপ কিছু জাঙ্ক মান লিখুন foo bar, sakjnaskljdnas htaccess দ্বারা স্বীকৃত নয় এমন কোনও কীওয়ার্ড এবং আপনার URL টি দেখুন। যদি এটি কাজ করে তবে আপনার একটি পাওয়া উচিত

500 অভ্যন্তরীণ সার্ভার সমস্যা

অভ্যন্তরীণ সার্ভার ত্রুটি

সার্ভারটি একটি অভ্যন্তরীণ ত্রুটি বা ভুল কনফিগারেশনের মুখোমুখি হয়েছে এবং আপনার অনুরোধটি সম্পূর্ণ করতে অক্ষম ....

আমি আপনাকে তাড়াতাড়ি রাখার পরামর্শ দিচ্ছি RewriteEngine on


যেহেতু আপনি আপনার মেশিনে আছেন। আমি ধরে নিয়েছি আপনি অ্যাপাচি .confফাইল অ্যাক্সেস আছে ।

.confফাইলটি খুলুন এবং এর মতো লাইনটি সন্ধান করুন:

LoadModule rewrite_module modules/mod_rewrite.so

যদি এটি মন্তব্য করা হয় (#), বিরামহীন এবং অ্যাপাচি পুনরায় চালু করুন।


পুনর্লিখন লগ করতে

RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9

উপরের 3 লাইন আপনার মধ্যে রাখুন virtualhost। পুনরায় আরম্ভ করুন।

RewriteLogLevel 9স্তরের জন্য উচ্চ মানের ব্যবহার করা আপনার অ্যাপাচি সার্ভারকে নাটকীয়ভাবে কমিয়ে দেবে! কেবলমাত্র ডিবাগিংয়ের জন্য 2 এর চেয়ে বেশি স্তরে পুনর্লিখনের লগফিল ব্যবহার করুন! স্তরের 9 প্রায় প্রতিটি পুনর্নির্দিষ্ট বিবরণ লগ করবে।


হালনাগাদ

অ্যাপাচি ২.৪-তে জিনিসগুলি পরিবর্তন হয়েছে:

থেকে 2.2 থেকে 2.4 আপগ্রেড

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

লগলিভেলের আরও তথ্যের জন্য, লগলভিল নির্দেশিকা দেখুন

আপনি অর্জন করতে পারেন

RewriteLog "/path/to/rewrite.log"

এই পদ্ধতিতে এখন

LogLevel debug rewrite_module:debug

ঠিক আছে, সুতরাং সমস্যাটি হ'ল, আমি .htaccess ফাইলটিতে একটি পুনর্লিখন যুক্ত করার চেষ্টা করছি এবং কোনও কারণে এটি এটি ব্যবহার করছে না।
মাচা

@ মাচা উপরের পদ্ধতিটি ব্যবহার করে দেখুন। যদি আপনি কোনও অভ্যন্তরীণ সার্ভার ত্রুটি পান তবে এর অর্থ mod_rewrite (.htaccess) সক্ষম করা আছে is আপনি কি একটি ভাগ্যবান হোস্টে আছেন?
থিংকিংমনকি

না আমি আমার লোকাল হোস্টে কাজ করছি, .htaccess ফাইলটি কখন লোড হয় সে সম্পর্কে আপনার ধারণা আছে? আমি যদিও
আপাচি

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

ঠিক আছে আমার প্রশ্ন ছিল, যদি কেউ ওয়েবপেজের জন্য অনুরোধ করে তবে অ্যাপাচি সার্ভারের পাশের স্ক্রিপ্টগুলিতে সরাসরি যেতে পারে বা folder ফোল্ডারে .htaccess ফাইলটি অনুসন্ধান করে তারপরে এগিয়ে যাবে ??
মাচা

52

'কিছু জাঙ্ক মান প্রবেশ করান' উত্তরটি আমার পক্ষে কৌশলটি করেনি, প্রবেশ করানো জাঙ্ক থাকা সত্ত্বেও আমার সাইটটি লোড করা অবিরত ছিল।

পরিবর্তে আমি নীচের লাইনটি .htaccess ফাইলের শীর্ষে যুক্ত করেছি:

deny from all

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


4
আপনি যাচাই করার সময় কয়েক সেকেন্ডের জন্য কাজ না করার বিষয়ে কিছু মনে না করলে এটিই সবচেয়ে সহজ পরীক্ষা।
মার্ডে

1
হ্যাঁ - আমি যে সাইটটিতে কাজ করছি সে .htaccess ফাইল ব্যবহার করছিল না তা যাচাই করতে আমাকে প্রায় এক সেকেন্ড সময় নিয়েছিল।
Bonh

1
ধন্যবাদ, একটি কবজির মতো কাজ করে :) আমাকে কিছুটা সময় ডিবাগ করতে বাঁচায়!
মার্টিজন ভ্যান হুফ

32

সাধারণত .htaccess এর যে কোনও পরিবর্তনের দৃশ্যমান প্রভাব থাকতে হবে। কোনও প্রভাব না থাকলে আপনার কনফিগারেশন অ্যাপাচি ফাইলগুলি পরীক্ষা করুন, এরকম কিছু:

<Directory ..>
    ...
    AllowOverride None
    ...
</Directory>

পরিবর্তন করা উচিত

AllowOverride All

এবং আপনি .htaccess ফাইলগুলিতে নির্দেশিকা পরিবর্তন করতে সক্ষম হবেন।


ধন্যবাদ। আমি ডিরেক্টরি গাছ / var / www জন্য মূল apache2.conf ফাইলের প্রাসঙ্গিক বিভাগটি পেয়েছি
টিম রিচার্ডসন

6

সম্ভবত আরও একটি যৌক্তিক পদ্ধতি হ'ল একটি ফাইল তৈরি করা (উদাহরণস্বরূপ, টেস্ট এইচটিএমএল), কিছু সামগ্রী যুক্ত করুন এবং তারপরে এটি সূচী পৃষ্ঠা হিসাবে সেট করার চেষ্টা করুন:

DirectoryIndex test.html

বেশিরভাগ ক্ষেত্রে, .htaccess নিয়মটি ডিরেক্টরি / ফাইল স্তরে যেখানে কাজ করে সেখানে অ্যাপাচি কনফিগারেশনকে ওভাররাইড করে


4

জিজ্ঞাসা করা তিনটির প্রথম প্রশ্নের উত্তর জানাতে, .htaccess ফাইলটি কাজ করছে কি না তা দেখার একটি সহজ উপায় .htaccess ফাইলের শীর্ষে একটি কাস্টম ত্রুটি ট্রিগার করতে হবে:

ErrorDocument 200 "Hello. This is your .htaccess file talking."
RewriteRule ^ - [L,R=200]

আপনার দ্বিতীয় প্রশ্নে, .htaccess ফাইলটি যদি না পঠিত হয় তবে এটি সম্ভব যে সার্ভারের মূল অ্যাপাচি কনফিগারেশন AllowOverrideসেট আপ হয়েছে None। অ্যাপাচি এর ডকুমেন্টেশনে এর জন্য সমস্যা সমাধানের টিপস এবং অন্যান্য ক্ষেত্রে হিট্যাক্সেস কার্যকর হতে বাধা দিতে পারে cases

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

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

ErrorDocument 200 "Request: %{THE_REQUEST} Referrer: %{HTTP_REFERER} Host: %{HTTP_HOST}"
RewriteRule ^ - [L,R=200]

অভিব্যক্তিটিকে একটি <If>নির্দেশিকায় রেখে স্বাধীনভাবে পরীক্ষা করুন । এটি আপনাকে নিশ্চিত করার অনুমতি দেয় যে আপনার অভিব্যক্তিটি সঠিকভাবে লিখিত হয়েছে বা আপনি যখন এটি প্রত্যাশা করেছেন তখন মিলেছে:

<If "%{REQUEST_URI} =~ /word$/">
    ErrorDocument 200 "Your expression is priceless!"
    RewriteRule ^ - [L,R=200]
</If>

শুভ .htaccess ডিবাগিং!


3

আপনার যদি অ্যাপাচি বিন ডিরেক্টরিতে অ্যাক্সেস থাকে তবে আপনি ব্যবহার করতে পারেন,

httpd -M প্রথমে লোড হওয়া মডিউলগুলি পরীক্ষা করতে।

 info_module (shared)
 isapi_module (shared)
 log_config_module (shared)
 cache_disk_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 proxy_module (shared)
 proxy_ajp_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 ssl_module (shared)
 status_module (shared)
 version_module (shared)
 php5_module (shared)

এর পরে সরল দিকনির্দেশনাগুলি পছন্দ করার মতো Options -Indexesবা deny from allদৃify় করবে willhtaccess সঠিকভাবে কাজ করছে।


1

আপনার এইচটিসেসের পুনর্লিখনের নিয়মগুলি পরীক্ষা করার জন্য, আপনি যে url এ নিয়ম প্রয়োগ করছেন তা কেবল পূরণ করুন, আপনার এইচটিসেসের সামগ্রীগুলি বড় ইনপুট অঞ্চলে রাখুন এবং "টেস্ট" বোতাম টিপুন।

http://htaccess.mwl.be/


-1

আপনার .htaccess ফাইলে কিছু আবর্জনা কেন রাখবেন না এবং অ্যাপাচি পুনরায় লোড করার চেষ্টা করুন। যদি অ্যাপাচি শুরু করতে ব্যর্থ হয় তবে আপনি এর কাজটি জানেন। জাঙ্কটি সরান তারপরে অ্যাপাচিটি পুনরায় লোড করুন যদি এটি আপনার কনফিগার করা সংস্থাগুলি লোড করে দেয় h htaccess সঠিকভাবে।


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