আমি কীভাবে আপাচি সিলেলিঙ্কগুলি অনুসরণ করতে পারি?


98

আমার অ্যাপাচি www ফোল্ডারে ( /var/wwwউবুন্টু ১০.১০ তে) আমার কাছে রয়েছে:

mydir -> /home/user/mydir

(যা দিয়ে আমি তৈরি করেছি ln -s)

এখন, আমি যদি mydirওয়েব থেকে ফাইলগুলির একটি তালিকা দেখতে চাই, তবে আমাকে অ্যাপাচি নির্দেশ দিতে হবে FollowSymLinks, তাই না?

তবে আমি এটা কোথায় রাখব? একটি .htaccessফাইল? কোথায়? আমি অনেক উপায়ে চেষ্টা করেছি কিন্তু আমি বুঝতে পারি না ...

এটি আমার /etc/apache2/sites-enabled/000-defaultফাইল:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks Indexes
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

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

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    Alias /downloads/ "/root/mydir/"
    <Directory "/root/mydir">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

আমি কনফিগ ফাইলে একটি এলিয়াসের সাথে চেষ্টা করেছিলাম .. এখনও কাজ করে না ..
লুকা

উত্তর:


65

এখানে দুটি জিনিস রয়েছে:

  1. symlinks
  2. ডিরেক্টরি তালিকা

symlinks

ধরে /var/wwwনেওয়া আপনার ডিফল্ট ভার্চুয়াল হোস্টের জন্য আপনার ডকুমেন্টরুট, আপনার ডিফল্ট ভার্চুয়াল হোস্ট কনফিগারেশন ফাইলটি খুঁজে পাওয়া উচিত (সম্ভবত /etc/apache2/sites-enabled/000-default) এবং এটি ভার্চুয়াল হোস্ট ব্লকের মধ্যে রাখা উচিত, যেমন

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

আপনি যদি কিছু পরিবর্তন না করেন তবে সেই বিকল্পটি ইতিমধ্যে থাকা উচিত।

ডিরেক্টরি তালিকা

ডিরেক্টরিতে অ্যাপাচি ফাইলগুলির তালিকা তৈরি করতে আপনাকে Indexesবিকল্পটিও সক্ষম করতে হবে, উদাহরণস্বরূপ পরিবর্তন

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

এতে /etc/apache2/sites-enabled/000-default:

    <Directory />
        Options FollowSymLinks Indexes
        AllowOverride None
    </Directory>

বা, সম্ভবত আরও সুরক্ষিত উপায় হ'ল এটিকে পরিবর্তন করা:

    <Directory />
        Options FollowSymLinks
        AllowOverride Indexes
    </Directory>

এবং এটি ভিতরে রাখুন /home/user/mydir/.htaccess

    Option Indexes

কেন .htaccess কাজ করে না

ডিফল্টরূপে, নির্বাণ Options <something>একটি ইন .htaccessফাইল কারণ আপনার কনফিগ ফাইলে অন্যান্য এন্ট্রির কাজ করবে না: AllowOverride None

এজন্য আমাদের AllowOverride Indexesসেখানে রাখতে হবে।

( ওভাররাইড ডকুমেন্টেশনের অনুমতি দিন )


উপরের আমার কনফিগারেশন ফাইলটি দেখুন ... এটি এখনও কাজ করে না ...
লুকা

এটা অনুমতি কোন সমস্যা হতে পারে? আমি রুট ব্যবহারকারী, আমি জানি যে কোনওভাবে কোনও সিস্টেমকে রুট হিসাবে ব্যবহার করা ভাল জিনিস নয় .. আমি রুট এবং যে ডিরেক্টরিটি আমি সিলেমিক করি সেটি মূল হোম / রুট / মাইডির মধ্যে রয়েছে ..
লুকা

1
হ্যাঁ. আপনি কোন ত্রুটি বার্তা দেখতে পাচ্ছেন? sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydirএটি কার্যকর করতে আপনার প্রয়োজন হবে এবং এটি সম্ভবত একটি ভাল ধারণা নয়। পারলে কোথাও ফাইলগুলি সরিয়ে নেওয়া ভাল /var/www
মিকেল

যখনই আপনি কোনও ত্রুটি পান এবং সহায়তা চাইতে যাচ্ছেন, আপনার অবশ্যই আমাদের সঠিক ত্রুটি বার্তা সরবরাহ করা উচিত। এবং মধ্যে ক্লু হবে /var/log/apache2/error.log
মাইকেল

7
নিশ্চিত করুন যে আপনি আপনার হোম ডিরেক্টরিতে ইশারা নেই যখন আপনি এটি মধ্যে এনক্রিপ্ট করেছেন, অর্থাত্ একটি সিম্বলিক লিঙ্ক তৈরি করুন /var/www/home/user/directory। এটি একটি বিশাল মাথাব্যথা তৈরি করবে।

11

বিকল্পটি অবশ্যই এটির মতো ব্যবহার করা উচিত:

Options +FollowSymLinks

সাধারণত এটা এ্যাপাচি কনফিগারেশন (রাখা হচ্ছে httpd.confবা conf.d/বা sites-enabled/) একটি ভিতরে <Directory>

দেখুন Options, AllowOverrideএবং <Directory>অ্যাপাচি ডকুমেন্টেশনে।


1
ফলোসিমলিংকের ক্ষেত্রে বিশেষত কোনও .conf ফাইলের মধ্যে ডিরেক্টরি কাঠামোর ভিতরে থাকা আবশ্যক। অ্যাপাচি বর্তমান ম্যানুয়াল থেকে "ফলোসিমলিংকস এবং সিমলিংকসআইফঅউনারম্যাচ বিকল্পগুলি কেবল <ডিরেক্টরি> বিভাগে বা .htaccess ফাইলগুলিতে কাজ করে।"
ClearCrescendo

1
সতর্কতা: বিকল্পগুলির সাথে একটি + বা - মিশ্রণগুলি বৈধ সিনট্যাক্স নয় এবং অপ্রত্যাশিত ফলাফলের কারণ হতে পারে।
কুর্ডপেজ

10

অ্যাপাচি ২.৪..7 সহ উবুন্টু ১৪.০৪ এ মূল (তাজা) কনফিগারেশনের সাথে, / var / www / html এর অধীন তৈরি হওয়া সিমলিঙ্কগুলি অনুসরণ করতে * .conf- তে কোনও পরিবর্তন করার দরকার নেই।

কিন্তু এটা প্রয়োজনীয় ব্যবহারকারী WWW-ডেটা অ্যাক্সেস আছে যে সব সিমবলিক লিঙ্ক লক্ষ্য পথে (এমনকি simlinks জন্য না শুধুমাত্র virtualhosts জন্য)। এই ক্ষেত্রে,

cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran

এই উদাহরণে ব্যবহারকারীর www-ডেটা (বা আপনি চাইলে সমস্ত ব্যবহারকারী তবে বিপজ্জনক হতে পারে) এর ডিরেক্টরিতে সমস্ত ভাবে অধিকার কার্যকর করতে হবে । প্রতিটি / পথ, / পাথ / টু এবং / পাথ / টু / আয়নাতে প্রতিটি এক্সের অধিকার প্রয়োজন। টার্গেট ডিরেক্টরিতে পড়ার অনুমতিও প্রয়োজন এবং ডিরেক্টরিটির লক্ষ্য অনুসারে ব্যবহারকারীর www-ডেটাতেও লেখার অনুমতি প্রয়োজন।

সূত্রটি https://stackoverflow.com/a/14623574 থেকে প্রাপ্ত হয়েছিল


1

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

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