لماذا يتم إعادة توجيه ملف .htaccess الخاص بي إلى مسار الخادم الكامل بدلاً من المسار النسبي؟

StackOverflow https://stackoverflow.com/questions/2542820

سؤال

لم أواجه أي مشكلة مع CakePhP من قبل ، ولكن هناك شيء غريب حول هذا الخادم ويتسبب في إعادة التوجيه في ملفات .htaccess للتصرف بشكل غريب.

يستخدم CakePhP mod_rewrite في ملفات .htaccess لإعادة توجيه الطلبات إلى مجلد Webroot الخاص بها. المشكلة هي أن عمليات إعادة التوجيه تدرج المسار الخاطئ وتسبب خطأ 404. تطبيق CakePhP الخاص بي ، الذي يتم تخزينه في دليل القوائم ، يحتوي على ملف .htaccess على النحو التالي:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$ app/webroot/    [R=301,L]
    RewriteRule    (.*) app/webroot/$1 [R=301,L]
</IfModule>

"

من المفترض أن يعيد توجيه أي طلب من http://hostname.com/~username/listings/ ل http://hostname.com/~username/listings/app/webroot/ومع ذلك ، بدلاً من مجرد إضافة "app/webroot/"إلى النهاية كما من المفترض ، فإنه يضيف مسار الخادم الكامل ( /home/username/public_html/listings/app/webroot/ ) مما أدى إلى عنوان URL النهائي http://hostname.com/home/username/public_html/listings/app/webroot/ وهو أمر غير صحيح بشكل واضح ويؤدي إلى خطأ 404.

الاستضافة موجودة على حساب استضافة مشترك ، بحيث يحد من ما يمكنني فعله بالإعدادات. لم أر هذا أبدًا يحدث من قبل ، وأعتقد أنه شيء خاطئ من جانب الاستضافة من الأشياء ، ولكن إذا كان لدى أي شخص بعض الاقتراحات المفيدة ، فيمكنني وضعها في شركة الاستضافة أيضًا.

هل كانت مفيدة؟

المحلول

يمكن العثور على حل سؤالك في أسفل هذا صفحة في كتاب Cakephp:

بالنسبة للعديد من خدمات الاستضافة (Godaddy ، 1and1) ، يتم تقديم خادم الويب الخاص بك بالفعل من دليل مستخدم يستخدم Mod_Rewrite بالفعل. إذا كنت تقوم بتثبيت CakePhP في دليل مستخدم (http://example.com/~username/cakephp/) ، أو أي بنية url أخرى تستخدم بالفعل mod_rewrite ، ستحتاج إلى إضافة عبارات إعادة كتابة إلى ملفات .htaccess التي يستخدمها CakePhp (/.htaccess ، /app/.htaccess ،/app/webroot/.htaccess).

لقد قمت بنشر CakePhP من مجلد Public_HTML الخاص بملف التعريف الخاص بي. اضطررت إلى تغيير 3 نفس ملفات .htaccess المذكورة أعلاه. فقط اضف RewriteBase /~username/ إلى ملفات .htaccess بعد ذلك RewriteEngine on!

نصائح أخرى

حاول إزالة .htaccess من الملف الرئيسي ... لقد عملت بالنسبة لي

كان الأمر بسيطًا جدًا (باستخدام مضيف Uolhost المشترك):

تحرير كلا ملفات .htaccess:

/webroot/.htaccess

/

أضف السطر التالي: rewritebase /

هنا هو ملف /webroot/.htaccess الكامل:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top