.htaccess অ্যাপাচি কাজ করছে না


135

আমার লিনাক্স উবুন্টুতে চলমান এডাব্লুএস ইসি 2 পরিষেবা থেকে একটি সার্ভার রয়েছে এবং আমি অ্যাপাচি, পিএইচপি এবং মাইএসকিএল ইনস্টল করেছি।

আমি .htaccessআমার নথির মূলটিতে একটি ফাইল যুক্ত করেছি /var/www/html

আমি এতে এই কোডটি প্রবেশ করিয়েছি: ErrorDocument 404 /var/www/html/404.phpএবং এটি এখনও প্রদর্শিত হচ্ছে না।

আমি এই কমান্ডটি একাধিকবার প্রবেশ করে রেখেছি: sudo service httpd restartসার্ভারটি পুনঃসূচনা করতে তবে কোনও পরিবর্তন প্রদর্শিত হয়নি ...

আমি কীভাবে এটি ঠিক করতে পারি ... আমি কি কিছু ভুল করেছি?

আগাম ধন্যবাদ!


2
আপনি কি 400 Bad Requestত্রুটিটি মানচিত করতে নিশ্চিত /var/www/html/404.php?
জন লিন

উত্তর:


288

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

দ্বিতীয়ত, .htaccess ফাইলগুলিকে অগ্রাহ্য করা হচ্ছে, AllowOverride সঠিকভাবে সেট করা আছে তা দেখতে আপনার পরীক্ষা করা উচিত। বিস্তারিত জানার জন্য http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride দেখুন । আপনার এটির সঠিক স্কোপ - যেমন আপনার কনফিগারেশনের ডান ব্লকে সেট করা আছে তাও নিশ্চিত করতে হবে। নিশ্চিত হয়ে নিন যে আপনি ব্লকের কোনওটিকে সম্পাদনা করছেন না editing

তৃতীয়ত, আপনি যদি নিশ্চিত করতে চান যে কোনও htaccess ফাইলটি আসলে পড়ছে, তবে এতে আবর্জনা রেখে দিন। আপনার .htaccess ফাইলে "INVALID লাইন এখানে" এর মতো একটি অবৈধ লাইন, যখন আপনি সেই ফাইলটি সম্বলিত ডিরেক্টরিতে আপনার ব্রাউজারটিকে নির্দেশ করেন তখন একটি 500 সার্ভার ত্রুটির ফলাফল ঘটবে। যদি এটি না হয়, তবে আপনার কাছে AllowOverride সঠিকভাবে কনফিগার করা নেই।


141
ডায়গনিস্টিক সরঞ্জাম হিসাবে .htaccess ফাইলে আবর্জনা রাখার জন্য +1।
retrohacker

46
প্রোগ্রামিংয়ের আবর্জনা যত বেশি শোনাচ্ছে তত বেশি দরকারী।
এনক্রিপ্ট

1
আমি "A STRING" আমার .htaccess এ রেখেছি, তাই আমি একটি ত্রুটি পেয়েছি, তাই আমি আমার ডেবিয়ানে AllowOverride Allসমস্ত apache2.confরেখেছি এবং এটি কার্যকর
অ্যালেক্স

1
মনে রাখবেন যে AllowOverrideকেবল <Directory>নির্দেশে কাজ করে এবং কোনও <Location ...>বিভাগের ভিতরে রাখলে তা অগ্রাহ্য করা হবে , দেখুন: httpd.apache.org/docs/2.4/mod/core.html#allowoverride
ড্যানিয়েল

2
এছাড়াও লক্ষ করুন যে <Directory>নির্দেশটি আপেক্ষিকের পরিবর্তে একটি নিখুঁত পথের প্রত্যাশা করে। আমার ক্ষেত্রে, কাজ করার সময় <Directory /> ব্যর্থ হয়েছে<Directory /var/www/html/subdir>
লুকাশ নুথ

115
  1. অ্যাপাচি Mod_rewrite মডিউল সক্ষম করুন

    a2enmod rewrite

  2. নিম্নলিখিত কোড যুক্ত করুন /etc/apache2/sites-available/default

    AllowOverride All

  3. অ্যাপাচি পুনরায় চালু করুন

    /etc/init.d/apache2 restart


7
নোট করুন যে অ্যাপাচি ২.৪-এ কনফিগারেশন ফাইলগুলির মধ্যে / etc / apache2 / সাইট-উপলব্ধ থাকা আবশ্যক এখনই .conf এ শেষ হওয়া উচিত। এবং আমার সার্ভারে / etc / apache2 / সাইটগুলি উপলভ্য এবং একটিতে / ইত্যাদি / অ্যাপাচি 2 /
ডিফল্ট কোডফোন

2
ধন্যবাদ, আমার ক্ষেত্রে পুনর্লিখনটি
ক্রস

আমি ইতিমধ্যে এই পদক্ষেপগুলি অনুসরণ করেছি তবে এটি আপাচে ২.৪ এ কাজ করছে না আমি কী ভুল করছি = [[
লুসিওনা অ্যান্ড্রেস মার্টিনি ২

দেখে মনে হচ্ছে আইপি ওভাররাইডগুলির অনুমোদন প্রয়োজন !
লুসিয়ানো এন্ড্রেস মার্টিনি ২

আমি প্রথম পদক্ষেপটি বাদ দিয়েছিলাম তবে আমার apache.conf (ডাবিয়ান 8, /etc/apache2/apache.conf) এ AllowOverride All এ পরিবর্তন করেছি, পুনরায় চালু হয়েছে এবং ফাইলগুলি অ্যাক্সেসযোগ্য নয়, ভাল। তবে ত্রুটিটি অনুমতি অস্বীকার করার মতো নয় তবে 500 টি অভ্যন্তরীণ সার্ভার ত্রুটি, এটি কেন? আমি কি এটি ঠিক করতে পারি?
ডাসলোর্ট

44

যদি আপনি উপরোক্ত সমস্তগুলি চেষ্টা করে দেখেছেন, যা সমস্ত বৈধ এবং ভাল উত্তর, এবং আপনার এইচটিসেসি ফাইলটি কাজ করছে না বা পড়ছে না তবে apache2.confফাইলটির নির্দেশিকা পরিবর্তন করুন। উবুন্টুর নীচে পথটি/etc/apache2/apache2.conf

<Directory>আপনার সর্বজনীন ওয়েব পৃষ্ঠাগুলির দিকে নির্দেশ নির্দেশিকা পরিবর্তন করুন , যেখানে এইচটিস্যাক্সেস ফাইল থাকে। থেকে পরিবর্তন AllowOverride NoneকরুনAllowOverride All

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

আমারও একই সমস্যা ছিল এবং উবুন্টু জিজ্ঞাসার উত্তর এবং ব্যাখ্যা খুঁজে পেয়েছি! ফোরাম /ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working


2
অথবা, এটি ভিহস্ট
-অনিক

প্রকৃতপক্ষে, ফাইলটি পড়ার এবং ব্যবহারের AllowOverride FileInfoজন্য কেবল তৃতীয় লাইনেই প্রয়োজনীয় .htaccessAllঅতিরিক্ত কনফিগারেশন ওভাররাইডগুলিকে সক্ষম করে, যেমন .httpasswd(যা Authconfigপরিবর্তে পৃথকভাবে পৃথকভাবে সক্ষম করা যায় All)।
রাফাল

20

জন্য উবুন্টু,
প্রথমত, এই কমান্ডটি প্রয়োগ করুন: -

sudo a2enmod rewrite

তারপরে, /etc/apache2/sites-available/000-default.confএই কমান্ডটি ব্যবহার করে ন্যানো বা ভিম ব্যবহার করে ফাইলটি সম্পাদনা করুন : -

sudo nano /etc/apache2/sites-available/000-default.conf

তারপরে 000-default.confফাইলটিতে লাইনের পরে এটি যুক্ত করুন DocumentRoot /var/www/html। যদি আপনার রুট এইচটিএমএল ডিরেক্টরিটি অন্য কিছু হয়, তবে এটি লিখুন: -

<Directory "/var/www/html">
  AllowOverride All
</Directory>

সবকিছু করার পরে কমান্ডটি ব্যবহার করে অ্যাপাচি পুনরায় চালু করুন sudo service apache2 restart


6

কেবল 3 টি পদক্ষেপ অনুসরণ করুন

  1. নিম্নলিখিত কমান্ডটি ব্যবহার করে মোড_আরাইট সক্ষম করুন

    sudo a2enmod পুনর্লিখন

পাসওয়ার্ড জিজ্ঞাসা করা হবে। সুতরাং আপনার পাসওয়ার্ড লিখুন

  1. / Etc / apache2 / সাইটগুলি উপলভ্য / এ অবস্থিত আপনার 000-default.conf বা default.conf ফাইল আপডেট করুন ডিরেক্টরিতে । আপনি এটি সরাসরি সম্পাদনা করতে পারবেন না। খোলার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন

    sudo gedit /etc/apache2/sites- উপলভ্য / 1000-default.conf

অথবা sudo gedit /etc/apache2/sites- উপলভ্য / ডেফল্টকনফ

তুমি পাবে

ডকুমেন্টরুট / ভার / www / এইচটিএমএল

অথবা

ডকুমেন্টরুট / ভার / www

লাইন। এর পরে নিম্নলিখিত কোড যুক্ত করুন।

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ব্যবহারকারীকে ডিরেক্টরি ট্যাগ পথটি আপনার ফাইলের মতো দেখানো হয়েছে।

  1. নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার অ্যাপাচি সার্ভারটি পুনরায় চালু করুন

    sudo পরিষেবা apache2 পুনরায় আরম্ভ করুন


ধন্যবাদ। ব্রাজিল থেকে শুভেচ্ছা.
ফক্স .১১

5

সম্ভবত, AllowOverride কোনওটিতে সেট করা নেই। / etc / apache2 ফোল্ডারে অবস্থিত apache2.conf এর ডিরেক্টরি বিভাগে

AllowOverride All এ সেট করার চেষ্টা করুন


5

আমার অভিজ্ঞতায়, / var / www / ডিরেক্টরি নির্দেশিকা সাবফোল্ডার ভার্চুয়ালহোস্ট নির্দেশকে বাধা দেয়। সুতরাং যদি আপনি সমস্ত পরামর্শ চেষ্টা করে থাকেন এবং এখনও কাজ না করে থাকেন এবং আপনি ভার্চুয়ালহোস্টগুলি ব্যবহার করে থাকেন তবে এটি চেষ্টা করুন;

1 - আপনি যে AllowOverride Allনির্দেশিকা আছে তা নিশ্চিত হন /etc/apache2/sites-available/example.com.conf

2 - চেক / var / www / ডিরেক্টরি নির্দেশাবলী /etc/apache2/apache2.conf(সম্ভবত 164 লাইনে) যা দেখতে দেখতে;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

যদি কোনও AllowOverride Noneনির্দেশিকা থাকে তবে এটিকে পরিবর্তন করুন AllowOverride All বা কেবলমাত্র লাইনে পালাতে হবে


3

ডিফল্টরূপে, অ্যাপাচি পুনরায় লেখার নিয়ম প্রয়োগ করতে .htaccess ফাইল ব্যবহার করা নিষিদ্ধ করে

পদক্ষেপ 1 - মোড_আররাইট সক্ষম করা (যদি সক্ষম না করা হয়) প্রথমে আমাদের মোড_উরাইট সক্রিয় করতে হবে। এটি উপলভ্য তবে একটি পরিষ্কার অ্যাপাচি 2 ইনস্টলেশন সক্ষম নয়।

$ sudo a2enmod rewrite

এটি মডিউলটি সক্রিয় করবে বা আপনাকে সতর্ক করবে যে মডিউলটি ইতিমধ্যে সক্ষম। এই পরিবর্তনগুলি কার্যকর করতে, অ্যাপাচি পুনরায় চালু করুন।

$ sudo systemctl restart apache2

মোড_উইরাইট এখন সম্পূর্ণরূপে সক্ষম। পরবর্তী পদক্ষেপে আমরা একটি .htaccess ফাইল সেট আপ করব যা আমরা পুনঃনির্দেশগুলির জন্য পুনর্লিখনের নিয়মগুলি সংজ্ঞায়িত করতে ব্যবহার করব।

পদক্ষেপ 2 - .htaccess সেট আপ করুন ন্যানো বা আপনার প্রিয় পাঠ্য সম্পাদক ব্যবহার করে ডিফল্ট অ্যাপাচি কনফিগারেশন ফাইলটি খুলুন।

$ sudo nano /etc/apache2/sites-available/000-default.conf

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

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    . . . 
</VirtualHost>

সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন। এই পরিবর্তনগুলি কার্যকর করতে, অ্যাপাচি পুনরায় চালু করুন।

$ sudo systemctl restart apache2

সম্পন্ন. আপনার .htacess কাজ করা উচিত। এই লিঙ্কটি আসলে কাউকে সহায়তা করতে পারে https://www.digitalocean.com/commune/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04


আমার জন্য পুনরায় চালু করা কমান্ডটি হ'ল $ sudo httpd -k restart(রেড হ্যাট ৪.৪..7-২৩)
হিমালয়


1

ইন WampServerখুলুন WampServer ট্রে আইকন ----> এ্যাপাচি ---> অ্যাপাচি মডিউল ---> rewrite_module



0

সম্পূর্ণতার জন্য, "AllowOverride All" যদি আপনার সমস্যাটি ঠিক না করে তবে আপনি এই সমস্যাটি ডিবাগ করতে পারেন:

  1. দৌড়ে দেখুন apachectl -Sএবং আপনার একাধিক নেমহোস্ট আছে কিনা তা দেখুন। এটি হতে পারে যে httpd অন্য ডকুমেন্টআরটের .htaccess সন্ধান করছে।

  2. strace -f apachectl -Xএটি কোথায় লোড হচ্ছে (বা লোড হচ্ছে না) ব্যবহার করুন এবং দেখুন .htaccess থেকে।

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