htaccess ولا www
-
24-09-2019 - |
سؤال
أحاول إعادة توجيه موقعي بأكمله إلى غير WWW
هنا هو رمز HTACCESS الذي أستخدمه
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# no www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.akorra\.com$ [NC]
RewriteRule ^.*$ http://akorra.com%{REQUEST_URI} [R=301,L]
أيه أفكار
المحلول
أعتقد أن قواعدك تحتاج إلى علامات الوحدة النمطية.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# no www
RewriteCond %{HTTP_HOST} ^www\.akorra\.com$ [NC]
RewriteRule ^.*$ http://akorra.com%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>
نصائح أخرى
إليك ما تحتاج إلى إضافته إلى .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
ومع ذلك ، إذا كنت تعمل مع WordPress كمحرك يعمل على تشغيل موقعك بالكامل ، فما عليك سوى تحديث بنية الرابط الثابت وجميع الإعدادات الداخلية باستخدام اسم المجال الخاص بك لإزالة www.
تعديل:
اعتقدت أن ذلك كان مختلفًا عندما كتبت الإجابة آسف. حاول تحريك قاعدة غير WWW الخاصة بك إلى الأعلى ...
# no www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.akorra\.com$ [NC]
RewriteRule ^.*$ http://akorra.com%{REQUEST_URI} [R=301s,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
مرة أخرى ضع في اعتبارك إذا تم تعيين WordPress لإنتاج روابط مع أ www
بعد ذلك ، لن يمنعه شيء من العودة إلى كل شيء إلى WWW حتى مع قاعدة إعادة الكتابة الصحيحة.
المزيد من تفاصيل WordPress:
تحقق من الإعدادات في wp/wp-admin/options-general.php
...
- تأكد من إزالة
www
فيWordPress address (URL)
- تأكد من إزالة
www
فيBlog address (URL)
ثم قم بتحديث بنية prepalink الخاصة بك في wp-admin/options-permalink.php
لذلك تنعكس التغييرات.
بعد كل ما يقال وفعل ، تأكد من أن WordPress لم يكتب رمزًا جديدًا في .htaccess
ملف.
مرحبًا ، أعتقد أنك بحاجة إلى ضبط البرنامج النصي الخاص بك على النحو التالي لإعادة كتابة العمل:
Options +FollowSymlinks
RewriteEngine on
أعتقد أنه يجب إدراج Symlinks المتابعة على الإطلاق لإعادة كتابة عنوان URL للعمل بشكل صحيح.
المزيد من النصائح حول mod_rewrite هنا:
http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html
روب
RewriteEngine On
RewriteBase /
# no www
RewriteCond %{HTTP_HOST} ^([^.]+)\.akorra\.com$ [NC]
RewriteRule ^(.*)$ http://akorra.com/$1 [R=301,L]
# WordPres
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
هذا يجب أن يعمل
أقترح استخدام هذا الكود لإزالة WWW من موقع الويب الخاص بك:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
إنه أكثر عاما.
وفي مثالك ، من الأفضل استخدام هذا:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# no www
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>