تفاوت ریدایرکت داخلی با ریدایرکت خارجی در چی هست؟

phpweb

Active Member
وقتی توی فایل htaccess از کد زیر استفاده می کنیم، این کد روی ظاهر لینک تاثیر می ذاره و www به لینک اضافه می شه.
PHP:
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
ولی وقتی از کد زیر استفاده می کنیم هیچ تاثیری روی ظاهر لینک ایجاد نمی شه.
PHP:
RewriteRule ^panel/([a-zA-Z0-9]+)$ panel.php?action=$1 [NC,L]
لطفا بگید که تفاوت این دو نوع ریدایرکت کردن در چی هست؟
 

Domanjiri

Well-Known Member
سلام

این مربوط به فلگ هایی هست که داخل قلاب ( یا همون کروشه) قرار میدیم:

L یعنی وقتی این شرط صدق کرد از بررسی مابقی دستورها صرفه نظر کن

R=x همون ریدایرکت خارجی هست که x در اینجا HTTP response هست( 301 انتقال دائمی، 302 انتقال موقت و...)

NC میگه که به بزرگ و کوچیک بودن حروف حساس نباش

وقتی فلگ R رو قرار میدیم، چون ریدایرکت بصورتی خارجی هست و با HTTP header انجام میشه، بدیهیه که url هم تغییر می کنه.

دیگه...اِ اِ...دیگه همین دیگه!

موفق باشی
 

phpweb

Active Member
سلام

این مربوط به فلگ هایی هست که داخل قلاب ( یا همون کروشه) قرار میدیم:

l یعنی وقتی این شرط صدق کرد از بررسی مابقی دستورها صرفه نظر کن

r=x همون ریدایرکت خارجی هست که x در اینجا http response هست( 301 انتقال دائمی، 302 انتقال موقت و...)

nc میگه که به بزرگ و کوچیک بودن حروف حساس نباش

وقتی فلگ r رو قرار میدیم، چون ریدایرکت بصورتی خارجی هست و با http header انجام میشه، بدیهیه که url هم تغییر می کنه.

دیگه...اِ اِ...دیگه همین دیگه!

موفق باشی
وقتی با ریرایت و بدون ریدایرکت خارجی ساختار لینکها رو تغییر می دیم، مشکلی از نظر سئو پیش نمی یاد؟ شما برای سئو کردن لینکهاتون چه روشی به کار می برید؟

الان تست کردم و ظاهرا آپاچی هم لینکها رو برای چند لحظه کش می کنه، این درسته؟
 
آخرین ویرایش:

Domanjiri

Well-Known Member
بازم سلام

n تا پارامتر وجود داره که روی نحوه ی ریدایرکت کردن تاثیر میذاره، مسلماً وقتی که قراره ظاهر لینک ها رو زیبا و به قولی انسان پسند(!) کنیم، از ریدایرکت خارجی استفاده نمی کنیم، درسته؟

اما برای اینکه تصور نشه که خُب پس فلگ R کاربردی نداره، باید بگم که اتفاقن ریدایرکت 301 یکی از پرکاربردترین روش ها توی SEO هست.

تو این زمینه منبع فراوونه، با سرچ هر کلمه ای که به این قضیه مربوط باشه، کلی مقاله و مطلب پیدا می کنی
( مثلن سرچ کن : redirecting and seo best practice)

الان تست کردم و ظاهرا آپاچی هم لینکها رو برای چند لحظه کش می کنه، این درسته؟
؟! دقیقن چه چیزی تجربه کردی؟ [تست کردی]

موفق باشی
 
آخرین ویرایش:

phpweb

Active Member
بازم سلام

n تا پارامتر وجود داره که روی نحوه ی ریدایرکت کردن تاثیر میذاره، مسلماً وقتی که قراره ظاهر لینک ها رو زیبا و به قولی انسان پسند(!) کنیم، از ریدایرکت خارجی استفاده نمی کنیم، درسته؟

اما برای اینکه تصور نشه که خُب پس فلگ R کاربردی نداره، باید بگم که اتفاقن ریدایرکت 301 یکی از پرکاربردترین روش ها توی SEO هست.

تو این زمینه منبع فراوونه، با سرچ هر کلمه ای که به این قضیه مربوط باشه، کلی مقاله و مطلب پیدا می کنی
( مثلن سرچ کن : redirecting and seo best practice)


؟! دقیقن چه چیزی تجربه کردی؟ [تست کردی]

موفق باشی
وقتی توی پی اچ پی از تابع هدر برای جابجا کردن کاربرها استفاده می کنم کد 302 که انتقال موقت هست داده می شه. چطور می تونم وقتی از تابع هدر استفاده می کنم بجای کد 302 کد 301 ارسال بشه؟

؟! دقیقن چه چیزی تجربه کردی؟ [تست کردی]
من برای بهتر کردن ظاهر لینکهام از ریدایرکت داخلی استفاده می کنم، وقتی مطلب شما رو دیدم r=302 رو به انتهای کدهای htaccess اضافه کردم و ریدایرکت خارجی رو تست کردم، بعد از مشاهده نتیجه کدها رو به حالت ریدایرکت داخلی در آوردم ولی دیدم که تا چند لحظه ظاهر لینکها به حالت قبل نشده بود !
 

Domanjiri

Well-Known Member
وقتی توی پی اچ پی از تابع هدر برای جابجا کردن کاربرها استفاده می کنم کد 302 که انتقال موقت هست داده می شه. چطور می تونم وقتی از تابع هدر استفاده می کنم بجای کد 302 کد 301 ارسال بشه؟

PHP:
header("Location: /foo.php",TRUE,301);
من برای بهتر کردن ظاهر لینکهام از ریدایرکت داخلی استفاده می کنم، وقتی مطلب شما رو دیدم r=302 رو به انتهای کدهای htaccess اضافه کردم و ریدایرکت خارجی رو تست کردم، بعد از مشاهده نتیجه کدها رو به حالت ریدایرکت داخلی در آوردم ولی دیدم که تا چند لحظه ظاهر لینکها به حالت قبل نشده بود !
نه، به نظر می رسه این مربوط به مرورگر باشه.

موفق باشی
 

phpweb

Active Member
PHP:
header("Location: /foo.php",TRUE,301);
نه، به نظر می رسه این مربوط به مرورگر باشه.

موفق باشی
توی این هدر true چه کاری انجام می ده؟ الان دارید از کد 301 استفاده می کنیم و با این وجود چرا از true استفاده شده؟
 

Domanjiri

Well-Known Member
این True یه چیزی مثل فلگ L هست که بالا توضیح دادم، یعنی همین دستور رو اجرا کن و مابقی دستورات رو صرف نظر کن.
 

phpweb

Active Member
این True یه چیزی مثل فلگ L هست که بالا توضیح دادم، یعنی همین دستور رو اجرا کن و مابقی دستورات رو صرف نظر کن.
وقتی از تابع هدر استفاده می کنیم، پی اچ پی کاربر رو به مسیر مشخص شده می فرسته و بقیه هدرها و توابع رو اجرا نمی کنه، با این شرایط چه نیازی به استفاده از true هست؟
 
آخرین ویرایش:

Domanjiri

Well-Known Member
دوتا مسئله هست، اول اینکه این آرگومان به طور پیشفرض true هست.

و دوم اینکه ، الان به نظرتون کد پایین مرورگر رو به کدوم صفحه میبره؟
PHP:
header("location: 1.html"); 
header("location: 2.html");
جواب: به 2.html (!!)

سوال: حالا این کد چی؟
PHP:
header("location: 1.html"); 
header("location: 2.html", False);
جواب: به 1.html

پ.ن: البته این که من گفتم شبیه فلگ L عمل میکنه، یکم زیادی قضیه رو ساده کردم. اگه دوست داری می تونی داکیومنت تابع هدر رو بخونی تا بطور دقیق کار این آرگومان رو متوجه بشی.

برای سرگرمی:)green:!): این کد مرورگر رو به کجا می بره؟
PHP:
header("location: 1.html"); 
echo "Hi!";
header("location: 2.html");
جواب: به 1.html (!)

موفق باشی
 

جدیدترین ارسال ها

بالا