سؤال كيف يمكنني الحصول على Apache لمتابعة الروابط الصوتية؟


في مجلد www apache الخاص بي (/var/www على أوبونتو 10.10) لدي:

mydir -> /home/user/mydir

(التي أنشأتها مع ln -s)

الآن ، إذا كنت تريد أن ترى قائمة بالملفات في mydir من على شبكة الإنترنت ، لا بد لي من إعطاء apache التوجيه 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>

87
2018-02-10 21:52


الأصل


لقد حاولت أيضا مع اسم مستعار في ملف التكوين .. لا يزال لا يعمل .. - luca


الأجوبة:


هناك شيئان هنا:

  1. روابط الرمزية
  2. سرد الدليل

روابط الرمزية

على افتراض /var/www هو الخاص بك DocumentRoot للمضيف الظاهري الافتراضي الخاص بك ، يجب أن تجد ملف التكوين الافتراضي الخاص بك المضيف الافتراضي (ربما /etc/apache2/sites-enabled/000-default) ووضعها داخل كتلة المضيف الظاهرية ، على سبيل المثال ،

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

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

إذا لم تكن قد غيرت أي شيء ، فيجب أن يكون هذا الخيار موجودًا بالفعل.

سرد الدليل

لجعل قائمة Apache الملفات في دليل ، تحتاج إلى تمكين 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 هناك.

(AllowOverride documentation)


59
2018-02-10 21:56



انظر إلى ملف التهيئة أعلاه ... لا يعمل بعد ... - luca
يمكن أن يكون مشكلة أذونات؟ أنا مستخدم الجذر ، وأنا أعلم أنه ليس من الجيد استخدام نظام كجذر ، على أي حال .. أنا الجذر والدليل الذي أرتبط به في الجذر / home / root / mydir .. - luca
نعم فعلا. ما رسالة الخطأ التي تراها؟ سوف تحتاج إلى القيام به sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir لجعلها تعمل ، وربما هذه ليست فكرة جيدة. من الأفضل نقل الملفات في مكان ما تحت /var/www إذا كنت تستطيع. - Mikel
عندما تحصل على خطأ وتطلب منك المساعدة ، يجب أن تقدم لنا رسالة الخطأ بالضبط. وسيكون هناك أدلة في /var/log/apache2/error.log. - Mikel
تأكد من أنك لا تشير إلى دليل منزلك عندما تكون مشفرًا ، أي رابطًا رمزيًا في /var/www → /home/user/directory. وسوف تنتج صداع ضخم.


مع التكوين الأصلي (الطازج) على Ubuntu 14.04 مع apache 2.4.7 ، ليست هناك حاجة لتغيير أي شيء في * .conf لمتابعة الروابط التي تم إنشاؤها تحت / var / www / html.

لكن من الضروري أن يكون www-data للمستخدم الوصول إلى الكل مسار هدف الارتباط الرمزي (حتى بالنسبة لـ virtualhosts ليس فقط لـ simlinks). على سبيل المثال،

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

في هذا المثال المستخدم www-data (أو جميع المستخدمين إذا كنت تريد ، ولكن يمكن أن تكون خطرة) الاحتياجات نفذ - اعدم حقوق على طول الطريق إلى الدليل. تحتاج إلى x حقوق في كل من / path / path / to و / path / إلى / mirror. يحتاج أيضا اقرأ إذن على الدليل المستهدف ، ووفقًا لهدف الدليل ، ربما يحتاج المستخدم www-data إلى أذونات الكتابة أيضًا.

تم الحصول على فكرة من https://stackoverflow.com/a/14623574


10
2017-10-02 19:14





يجب استخدام الخيار كما يلي:

Options +FollowSymLinks

عادة ما يتم وضعها في تكوين Apache (httpd.conf أو conf.d/ أو sites-enabled/) داخل <Directory>.

نرى Options، AllowOverride و <Directory> في وثائق أباتشي.


10
2018-02-10 22:00



في حالة FollowSymLinks على وجه التحديد يجب أن تكون داخل بنية دليل عندما تكون داخل ملف .conf. من دليل Apache الحالي "تعمل خيارات FollowSymLinks و SymLinksIfOwnerMatch فقط في مقاطع <Directory> أو .htaccess." - ClearCrescendo
تحذير: خلط الخيارات مع + أو - مع تلك بدون صيغة غير صحيحة ومن المحتمل أن يسبب نتائج غير متوقعة. - kurdtpage


لم أستطع الحصول على هذا العمل حتى تثبيت وحدة apache autoindex. من بين العديد من مشاركات المدونات والمنتديات ، لم يذكر أحد أنه ضروري. أمل أن هذا يساعد شخصاما.


1
2017-09-10 15:31