মোড_উইরাইট GET পরামিতিগুলি ফরোয়ার্ড করে না


9

আমার ডেভলপমেন্ট মেশিনে মোড_উইরাইট দিয়ে অ্যাপাচি সেট আপ করতে আমার সমস্যা হচ্ছে। Mod_rewrite সক্রিয়, এবং কিছু নিয়মের জন্য ভাল কাজ করে। কিছু নিয়ম যেমন এর মতো কাজ করে না তেমন:

RewriteRule ^static/([^/]+)/([^/]+)     /static.php?sISOCode=$1&sPage=$2

স্ট্যাটিক.এফপি-তে আমি এটি করি (ডিবাগিংয়ের জন্য):

<?php
print_r($_GET); print_r($_POST); print_r($_SERVER); die();

কোনটি মুদ্রণ করে (items _SERVER অ্যারে থেকে কিছু আইটেম সরানো হয়েছে):

Array
(
)
Array
(
)
Array
(
    [SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address>
    [SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
    [SERVER_ADDR] => 127.0.0.1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 127.0.0.1
    [DOCUMENT_ROOT] => /home/veg/workspace/project
    [SERVER_ADMIN] => webmaster@localhost
    [SCRIPT_FILENAME] => /home/veg/workspace/project/static.php
    [REMOTE_PORT] => 38954
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /static/no/startCar
    [SCRIPT_NAME] => /static.php
    [PATH_INFO] => /no/startCar
    [PATH_TRANSLATED] => redirect:/index.php/startCar
    [PHP_SELF] => /static.php/no/startCar
    [argv] => Array
        (
        )
    [argc] => 0
)

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

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName project.example.com

        DocumentRoot /home/veg/workspace/project
        <Directory /home/veg/workspace/project>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
</VirtualHost>

অ্যাক্সেস লগ এবং ত্রুটি লগ কিছুই ঘটায় না যখন এটি ঘটে। কোন ধারণা প্রশংসা।

একই ফাইলের জন্য কাজ করে এমন একটি নিয়মের উদাহরণ:

RewriteRule ^faq/?$                   /static.php?sISOCode=no&sPage=faq

উত্তর:


16

আপনি কি কিউএসএ (ক্যোরি স্ট্রিং অ্যাপেন্ড) পতাকা ব্যবহার করার চেষ্টা করেছেন ?

RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2 [QSA]

সম্পাদনা করুন এবং নীচে বাস্তব উত্তর দিন:

এই সমস্যাটি অ্যাপাচি'র Mod_negotiation দ্বারা সৃষ্ট , বিশেষত আপনি যে মাল্টিভিউ বিকল্পগুলি ব্যবহার করছেন তা:

মাল্টিভিউয়ের প্রভাবটি নিম্নরূপ: সার্ভারটি যদি কিছু / dir / foo এর জন্য একটি অনুরোধ গ্রহণ করে, / / ​​কিছু / dir যদি মাল্টিভিউ সক্ষম করে থাকে এবং / কিছু / dir / foo উপস্থিত না থাকে তবে সার্ভারটি ডিরেক্টরিটি অনুসন্ধান করে যা পড়ে foo। * নামক ফাইলগুলি কার্যকরভাবে একটি টাইপ ম্যাপ আপ করে যা এই সমস্ত ফাইলের নাম দেয়, তাদের একই মিডিয়া টাইপ এবং কনটেন্ট-এনকোডিংগুলি প্রদান করে যদি ক্লায়েন্টের নাম অনুসারে তাদের একটি জিজ্ঞাসা করা হত। এরপরে এটি ক্লায়েন্টের প্রয়োজনীয়তার সাথে সেরা ম্যাচটি বেছে নেয়।

মাল্টিভিউগুলি সক্ষম করা অ্যাপাচিকে অনুমান করতে বলে যে কোন ফাইলটি ইউআরআই যখন বিদ্যমান অবস্থানে নির্দেশ করে না তখন কী ব্যবহার করা উচিত।

সমাধান:

মাল্টিভিউগুলিকে হয় -MultiViewsআপনার .htaccess ব্যবহার করে বা এগুলি একসাথে ছেড়ে দিয়ে অক্ষম করুন ।


1
আমি এটিও সুপারিশ করতে চেয়েছিলাম, তবে যা আমি পাই না: এটির দরকার নেই - ম্যানুয়ালটি পড়ে কমপক্ষে আমি এটি মনে করি না। এই প্রশ্নটি কীভাবে চালু হবে তা
উত্সাহিত

1
দুর্ভাগ্যক্রমে, কিউএসএ পতাকা এই পরিস্থিতিতে কিছুই পরিবর্তন করে না। GET প্যারামিটারগুলি মূল URL থেকে নয়, নিয়মে যুক্ত হয়।
Vegard Larsen

2

সমাধানটি হ'ল এপাচে কনফিগারেশনটি পরিবর্তন করা:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName project.example.com

        DocumentRoot /home/veg/workspace/project
        <Directory /home/veg/workspace/project>
                Options FollowSymLinks
                # AllowOverride All
                # Order allow,deny
                # allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
</VirtualHost>

আমি জানি না কেন এটি কাজ করে


2
ব্যাখ্যার জন্য আমার সংশোধিত পূর্ববর্তী উত্তরটি দেখুন: সার্ভারফ্লাট
অ্যারন রোটভেল

0

নীচের মতো আপনার htaccess ফাইলটিতে-মাল্ট্যভিউগুলি অক্ষম করুন

RewriteEngine on
Options -Indexes -MultiViews

RewriteRule ^static/([^/]+)/([^/]+)     /static.php?sISOCode=$1&sPage=$2

এটি সমস্যার সমাধান করবে

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