সার্ভারে মোড_উইরাইট সক্ষম হয় কিনা তা কীভাবে পরীক্ষা করবেন?


104

বর্তমানে আমি লাইটস্পিড সার্ভার সহ হোস্টিংটি ব্যবহার করছি । হোস্টিং বলছে mod_rewriteসক্ষম হয়েছে তবে আমি আমার স্ক্রিপ্টটি সেখানে কাজ করতে পারি না। আমি যখনই ইউআরএল অ্যাক্সেস করার চেষ্টা করি তখন এটি 404 - খুঁজে পাওয়া পৃষ্ঠায় ফিরে আসে ।

আমি একই কোডগুলি অন্য সার্ভারে রেখেছি যা আপাচে চলছে। এটি সেখানে কাজ করছে। সুতরাং আমি অনুমান, এটি .htaccessএবং mod_rewriteইস্যু।

তবে হোস্টিং সমর্থনটি এখনও আমার সাথে জোর করছে যে তাদের মোড_আরাইটটি চালু আছে, তাই আমি এটি জানতে চাই যে এটি কীভাবে বাস্তবে সক্ষম হয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি।

আমি চেক করার চেষ্টা করেছি phpinfo(), তবে ভাগ্য নেই, আমি mod_rewriteসেখানে খুঁজে পাচ্ছি না, কারণ তারা ব্যবহার করছে lightspeed?

চেক করার কোনও উপায় আছে? আমাকে সাহায্য করুন. ধন্যবাদ.

এফওয়াইআই: আমার .htaccessকোডটি

Options -Indexes

<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>

আমিও এরকম চেষ্টা করেছি

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

তবে একই ফল।

উত্তর:


98

কমান্ড লাইন থেকে টাইপ করুন

sudo a2enmod পুনর্লিখন

যদি পুনরায় লেখার মোডটি ইতিমধ্যে সক্ষম করা থাকে তবে এটি আপনাকে জানাবে!


মোড পুনর্লিখন সক্ষম করার এটি সহজতম উপায়।
অ্যান্ড্রোমদা 30'18

3
হ্যাঁ ! নিখুঁত, ঠিক নিখুঁত।
জর্জ দিমিত্রিডিস

কাজ করছে. সহজ এবং সহজ। ধন্যবাদ
বিপ্লব রাউট

96
  1. মোড_আরাইট মডিউল সক্ষম হয়েছে কিনা তা পরীক্ষা করতে আপনার ডাব্লুএমএপি সার্ভারের রুট ফোল্ডারে একটি নতুন পিএইচপি ফাইল তৈরি করুন। নিম্নলিখিত প্রবেশ

    phpinfo();

  2. আপনার ব্রাউজার থেকে আপনার তৈরি ফাইল অ্যাক্সেস করুন।

  3. CtrlFএকটি অনুসন্ধান খোলার জন্য। 'মোড_উইরাইট' অনুসন্ধান করুন। এটি সক্ষম করা থাকলে আপনি এটি 'লোডড মডিউল' হিসাবে দেখতে পাবেন

  4. যদি তা না হয় তবে httpd.conf (অ্যাপাচি কনফিগারেশন ফাইল) খুলুন এবং নিম্নলিখিত লাইনের জন্য সন্ধান করুন।

    #LoadModule rewrite_module modules/mod_rewrite.so

  5. শুরুতে পাউন্ড ('#') সাইনটি সরান এবং এই ফাইলটি সংরক্ষণ করুন।

  6. আপনার অ্যাপাচি সার্ভার পুনরায় চালু করুন।

  7. আপনার ব্রাউজারে একই পিএইচপি ফাইল অ্যাক্সেস করুন।

  8. আবার 'মোড_উইরাইট' অনুসন্ধান করুন। আপনার এখন এটি সন্ধান করা উচিত।


9
আমি বিশ্বাস করি পিএইচপি নিজেই যখন অ্যাপাচি মডিউল হিসাবে চালিত হয় তখন phpinfo () অ্যাপাচি লোড মডিউলগুলি রিপোর্ট করে । ওপিতে বলা হয়েছে যে পিএইচপি লাইটস্পিডে চলছে, যার নিজস্ব মোড_উইরাইট সুসংগত পুনর্লিখন ইঞ্জিন রয়েছে।
মিঃ হোয়াইট

2
প্রথম পদক্ষেপের জন্য আমাকে প্রবেশ করতে হয়েছিল: <? পিএইচপি ইকো ফাইপিনফো (); ?>
গ্রেগ নয়ে

7
মনে রাখবেন যে আপনি পিএইচপি কোনও সিজিআই অ্যাপ্লিকেশন হিসাবে চালাচ্ছেন যদি এই পদ্ধতিটি কাজ করবে না (যা ক্ষেত্রে যদি phpinfo()"সার্ভার এপিআই" ফিল্ডটি "সিজিআই / ফাস্টসিজিআই" দেখায়)। phpinfo()সক্ষম মডিউলগুলি তালিকাভুক্ত করবে না। সেক্ষেত্রে পিএইচপি সিজিআই-তে কীভাবে মোড_আরাইটের জন্য পরীক্ষা করতে হয় তা দেখুন ।
ররি ও'কেনে

67

আপনি যদি ভার্চুয়াল হোস্ট কনফিগারেশন ফাইল ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে ভার্চুয়াল হোস্টের প্রশ্নে AllowOverride Allকোথাও এর মতো নির্দেশ রয়েছে :

<VirtualHost *:80>
        ...
    <Directory "directory/of/your/.htaccess">
        AllowOverride All
    </Directory>
</VirtualHost>

মূলত, এটি সমস্ত .htaccess নির্দেশিকাগুলির প্রসেসিংয়ের অনুমতি দেয়।


3
ধন্যবাদ। আমি আপনাকে বুডউইজার ণী <3
নিশান্ত ঘোদকে

বলতে আমরা কি বুঝি ...মধ্যে <Directory ...>? আমি সেখানে কি রাখব? ডিরেক্টরি যেখানে .htaccess হয়?
জোও পাইমেটেল ফেরেরিরা

হ্যাঁ, ... ... ডিরেক্টরিটি "..." এর মধ্যে উল্লেখ করা উচিত যেখানে ডিরেক্টরিটি .htaccess হয়
জোও পাইমেন্টেল ফেরেরিরা

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

1
রিচার্ড যদি এই উত্তরটি আপনার পক্ষে কাজ করে এবং আপনার সমস্যার সমাধান করে আপনার এটিকে সঠিক হিসাবে চিহ্নিত করা উচিত এবং জহমিককে তার যথাযথ পুরষ্কার দেওয়া উচিত।
সিনথিয়া ভি

18

যদি অ্যাপাচি_জেট_মডিউল () স্বীকৃত না হয় বা phpinfo () এ এই মডিউলটি সম্পর্কে কোনও তথ্য নেই; আপনার .htaccess ফাইলে সেই লাইনগুলি যুক্ত করে মোড রাইরাইটটি পরীক্ষা করার চেষ্টা করুন:

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

এবং mod_rewrite.php:

<?php echo "Mod_rewrite is activated!"; ?>

15

কনসোল:

<VirtualHost *:80>
        ...
    <Directory ...>
        AllowOverride All
    </Directory>
</VirtualHost>

sudo a2enmod rewrite
sudo service apache2 restart

আমি এটি সমাধান করার জন্য অনেক চেষ্টা করেছি এবং তারপরে যখন এটি চেষ্টা করি এটি আমার পক্ষে কাজ করে। আমার এখন শেষ অ্যাপাচি এবং উবুন্টু আছে।
ফার্নান্দো সানচিজ

15

যদি

in_array('mod_rewrite', apache_get_modules())

রিটার্ন করে trueমোড-রাইরাইট সক্রিয় করা আছে।


পুনর্লিখনের মডিউলটি সক্ষম বা না পিএইচপি কোডগুলির মাধ্যমে না পরীক্ষা করার জন্য এক লাইন সমাধান উপযুক্ত।
শাকিল আহমেদ

12

পিএইচপি'র পারফিডাইড apache_get_modules()ফাংশন সক্ষম মডিউলগুলির একটি তালিকা ফেরত দেয়। mod_rewriteসক্ষম হয়েছে কিনা তা পরীক্ষা করতে আপনি নিম্নলিখিত সার্ভারে নিম্নলিখিত স্ক্রিপ্টটি চালাতে পারেন:

<?php
print_r(apache_get_modules());
?>

যদি উপরের উদাহরণটি ব্যর্থ হয় তবে আপনি নিজের .htaccessফাইলটি ব্যবহার করে মোড-রাইরাইটটি যাচাই করতে পারবেন ।

htaccessডকুমেন্টের রুটে একটি ফাইল তৈরি করুন এবং নিম্নলিখিত পুনর্লিখনের নিয়মটি যুক্ত করুন:

RewriteEngine on

RewriteRule ^helloWorld/?$ /index.php [NC,L]

এখন http://example.com/HelloWorld দেখুন , আপনাকে অভ্যন্তরীণভাবে আপনার সাইটের /index.php পৃষ্ঠায় ফরোয়ার্ড করা হবে। অন্যথায়, যদি মোড-পুনর্লিখন অক্ষম করা হয়, আপনি একটি 500 ইন্টার্নেল সার্ভার ত্রুটি পাবেন।

আশাকরি এটা সাহায্য করবে.


আমি .2.২ ব্যবহার করেছি, অ্যাপাচি_গেট_মডিউলগুলি অপরিশোধিত হয়েছে। সম্পাদনার পরে .htaccessকি আমাকে অ্যাপাচি 2 পুনরায় চালু করতে হবে ?
আদি প্রসত্যও

1
না htaccess ব্যবহার করার সময় আপনার সার্ভারটি পুনরায় চালু করার দরকার নেই।
অমিত ভার্মা


11

এটি CentOS এ কাজ করে:

$ sudo httpd -M |grep rewrite_module

আউটপুট করা উচিত rewrite_module (shared)


এটি আপনার কাছে ssh অ্যাক্সেস আছে বলে ধরে নিলে এটি CentOS এ করার সেরা উপায়। ধন্যবাদ, @ অ্যাডটেক!
জন টি।

10

যদি এই কোডটি আপনার .htaccess ফাইলে থাকে (mod_rewrite.c এর জন্য চেক না করে)

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

এবং 500 টি সার্ভার ত্রুটি পেয়ে আপনি আপনার সাইটে যে কোনও পৃষ্ঠাতে যেতে পারেন বলে আমি মনে করি মোড রাইরাইটটি চালু আছে বলা নিরাপদ।


3
সুতরাং আপনি 500 ত্রুটি ছাড়াই সাইটে কিছু পৃষ্ঠা অ্যাক্সেস করতে পারবেন? এর অর্থ সাধারণত হয় যদি .htaccess ফাইলটি পড়তে থাকে যে মোড_ব্রাইটটি অবশ্যই চালু করা উচিত। তবে .htaccess পড়তে না পারা হতে পারে ... আপনার .htaccess ফাইলের শীর্ষে কিছু বোকা অক্ষর লেখার চেষ্টা করুন, যদি আপাচি আসলে ফাইলটি পড়ছে তবে এটি সংযোগটি 500 টি সার্ভার ত্রুটির সাথে মরে যাবে। যদি এটি পড়া হয়, আপনি কি এমন কোনও URL টির উদাহরণ দিতে পারেন যা আপনার মনে হয় কাজ করা উচিত কিন্তু না?
ক্লাইভ

সমস্যাটি হ'ল এটি অ্যাপাচি সার্ভার নয়, এটি লাইটস্পিড। আমি কখনই 500 ত্রুটি পাই না, আমি যা পাই 404 ত্রুটি। এই কারণেই আমি সন্দেহ করছি যে .htaccess সক্ষম নয়।
নাইটারাইডার

সম্ভবত হ্যাঁ, আমি বুদ্ধিমান অক্ষরগুলিকে .htaccess এ রাখার চেষ্টা করেছি এবং আপনি সরাসরি একটি পুনরায় লিখিত পৃষ্ঠাতে (উদাহরণস্বরূপ index.php) এ যাওয়ার পরে 500 টি ত্রুটি পেয়েছেন কিনা তা দেখুন। যদি তা না হয় তবে লাইটস্পিডের সাথে কীভাবে .htaccess সক্ষম করবেন তা জিজ্ঞাসা করে একটি নতুন প্রশ্ন পোস্ট করা উপযুক্ত
ক্লাইভ

5

আপনি পিএইচপি ফাংশন ব্যবহার করতে পারেন

      apache_get_modules

এবং mod_rewrite জন্য পরীক্ষা করুন

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

http://in2.php.net/apache_get_modules


2
apache_get_modules () কেবলমাত্র পিএইচপি অ্যাপাচি মডিউল হিসাবে চলমান থাকলে কাজ করবে। ওপিতে বলা হয়েছে যে পিএইচপি লাইটস্পিডে চলছে।
মিঃ হোয়াইট

5

আপনি যদি লিনাক্স সিস্টেমে থাকেন তবে নীচের ফোল্ডারে আপনি অ্যাপাচি 2 (আমার ক্ষেত্রে) সমস্ত সক্ষম মডিউল পরীক্ষা করতে পারেন: / ইত্যাদি / অ্যাপাচি 2 / মোড-উপলব্ধ

cd /etc/apache2/mods-available

টাইপ করতে: ll -a
যদি আপনি পিএইচপি জন্য উপলব্ধ মডিউল পরীক্ষা করতে চান (এই ক্ষেত্রে পিএইচপি 7) ফোল্ডার /etc/php/7.0/mods- উপলভ্য

cd /etc/php/7.0/mods-available

টাইপ করতে: ll -a


4

কেবল একটি নতুন পৃষ্ঠা তৈরি করুন এবং এই কোডটি যুক্ত করুন

 <?php
 if(!function_exists('apache_get_modules') ){ phpinfo(); exit; }
 $res = 'Module Unavailable';
 if(in_array('mod_rewrite',apache_get_modules())) 
 $res = 'Module Available';
?>
<html>
<head>
<title>A mod_rewrite availability check !</title></head>
<body>
<p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>

এবং এই পৃষ্ঠাটি চালান তারপরে মডিউলটি উপলব্ধ কিনা তা জানতে সক্ষম হন বা না পাওয়া যায় তবে আপনি আপনার হোস্টিংয়ের কাছে জিজ্ঞাসা করতে পারেন বা আপনি যদি স্থানীয় মেশিনে এটি সক্ষম করতে চান তবে wamp অ্যাপাচে পুনর্লিখনের মডিউল সক্ষম করতে এই ইউটিউব স্টেপ বাই স্টেপ টিউটোরিয়ালটি পরীক্ষা করে দেখুন https://youtu.be/xIspOX9FuVU?t=1m43s Wamp সার্ভার আইকন -> অ্যাপাচি -> অ্যাপাচি মডিউল এবং পুনর্লিখনের মডিউল বিকল্পটি পরীক্ষা করে দেখুন


2

আমি জানি এই প্রশ্নের বয়স কিন্তু আপনি আপনার এ্যাপাচি কনফিগারেশন ফাইল সম্পাদনা করতে পারেন যদি AllowOverride AllথেকেAllowOverride None

<Directory "${SRVROOT}/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

সঠিক নামটি এবং কখন সম্ভব ফাইলের অবস্থান পরিবর্তন করা দরকার তা বলা ভাল ধারণা idea এটি নতুনদের জন্য সহায়ক হবে। ধন্যবাদ
MindRoasterMir

এ কথাটিও মনে রাখা উচিত যে আপনি আপনার অ্যাপাচি পুনরায় স্থাপন করার পরেই পরিবর্তনগুলি কার্যকর হয়। ধন্যবাদ
MindRoasterMir



0

আমার সঠিক সমস্যাটি ছিল, আমি এটি কাস্টম কাঠামো ক্লিক করে সমাধান করেছি, তারপরে যুক্ত করে /index.php/%postname%/এটি কার্যকর হয়

আশা করি এটি কারও হতাশায় কী ভুল ছিল তা সন্ধান করার মধ্য দিয়ে আমি যে চাপটি বাঁচিয়েছিলাম তা রক্ষা পেয়েছি।

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