سلام من از nextjs برای سرورساید رندرینگ استفاده کردم. ولی وقتی توی سرچ کنسول قسمت test live میام url یک ص خاص از سایتمون رو میزنم و گوگل ایندکس میکنه توی نتایجش که یک اسکرین شات از نحوه ایندکس اون ص و یک فایل html میده.
توی اسکرین شات فقط هدر سایت ور خونده و هیچ محتوای دیگه ای از سایت رو نمیبینم. البته توی فایل html این مشکل وجود نداره. بنظرتون مشکل از سرورساید یا مشکل از کدنویسی اشتباه؟؟ من از هر کی پرسیدم جواب کمک کننده ای بهم نداد. ممنون میشم راهنمایی کنید.
من این دوره هم نگاه کردم ولی خب نمیدونم چرا گوگل درست سایت رو ایندکس نمیکنه و خالی محتوای ص و تاثیر منفی توی سئو سایمون داره
سلام
امکان داره که کد اون صفحه رو مخصوصا قسمت مربوط به تابع serverSideProps یا getStaticProps رو بفرستین؟
سلام وقت بخیر ممنون از پاسخگویی شما.
چشم من اون تیکه کد رو ارسال میکنم. ولی برای اینکه روشن تر باشه منظورم توضیحات دیگری هم خدمتتون عرض میکنم. من سایتم رو سرورساید کردم و یکی از صفحاتی که ما در سایت داریم ص دوره (محصول) هست که بسته به نوع محصول محتوا و url ش تغییر پیدا میکنه. الان دو تا ص دوره رو چک کردم و وقتی ctrl+u زدم و کد رو دیدم در یک ص کد html لود میشه ولی در ص دیگه نه. این خیلی جالب هر دو ص از یک کد استفاده میکنن.
مورد دیگری که در ص home سایتمون متوجه شدم شاید رد بقیه صفحات هم باشه این هست که محتوای تگ هایی که در خود این فایل ص هوم نوشتم لود میشن ولی اگر اون وسط از کامپوننتی استفاده کرده باشم توی این ص اون کامپوننت محتواش لود نمیشه. همین موضوعات سئو سایتم رو خراب کرده.
موضوع خیلی مهم دیگری هم که متوجه شدم این هست که وقتی یکی از صفحات رو در google search cosole آنلاین ایندکس میکنم، اسکرین شاتی که گوگل از نحوه ایندکس اون ص میده غالبا یک ص تقریبا خالی و بدون محتواس که فایل استایل ها هم لود نشده درش. مشکل فایل استایل هم وجود داره که نمیتونه بخونه.
export async function getServerSideProps(context) {
// Fetch data from external API
const res = await fetch(process.env.NEXT_PUBLIC_API_URL + '/search?courseId=' + context.query.id);
const data = await res.json();
// Pass data to the page via props
return {props: {"data": data}}
}
این تکه کد مربوط به سروردساید ص دوره ها هست.
export default class Course extends Component {
constructor(props) {
super(props);
this.state = {
isMobile: false,
courseId: props.query.id,
user_id: Cookies.get('uid'),
user: null,
data: props.data[0][0],
}
این هم ابتدای کد اصلی اون ص هست اگر کمکی به واضح شدن مسئله میکنه.
ممنون از شما
سلام مجدد
من تا حالا با این مشکل شخصا برخورد نکردم ولی میخوام بدونم که آیا پروژه تون لوکال هست یا روی سرور دیپلوی کردین؟! اگر دیپلوی شده آیا فایل server.js رو برای پروژتون ایجاد کردین یا نه؟
و اینکه بجای serverSideProps با getStaticProps هم امتحان کنید و ببینید که مجددا همین مشکل هست یا نه.
سلام
بله الان روی سرور پروژه.
من آموزش هاتون رو تقریبا بیشترشو دیدم این قسمت server.js رو یادم نیست. این فایل باید توی کدام دایرکتوری باشه؟ چون کل مقوله سرورساید سایت رو یک نفر دیگه قبل از من انجام داده و الان رفته من زیاد از کاراش خبر ندارم.
بعد بنظرتون ممکن یک ص سرورساید بشه کلیتش. اما اگر توی فایل اون ص از یک کامپوننت استفاده شده باشه اون کامپوننت کدش رندر نشه؟؟؟ این اتفاقم برای سایتم میفته. اگر یک نگاه بندازید کلی به سایتم بندازید ممنون میشم.
nikaro.ir
بعد در مورد توصیه آخرتون اگر از getstaticProps استفاده کنم برای صفحات داینامیک مثل ص دوره ( محصول) که تو سایت هست دچار مشکل نمیشم؟؟ یا اگر وقتی کابر بعد از رندر شدن ص یک اکشنی انجام داد دچارمشکل نمیشم؟؟
ولی با این وجود الان یک تست میکنم مورد دوم رو. مورد اول یعنی server.js رو اگر یک مختصر توضیخ بدید ممنون میشم.
سلام مجدد
ببینید فایل server.js باید حتما در پروژه تون باشه در صورتی که می خواهید روی سرور شخصی خودتون دیپلوی کنید.
این فایل میاد مراحل رندر و پری رندر شدن رو با استفاده از nodejs انجام میده. احتمال میدم که مشکل شما بخاطر همین قضیه باشه.
از لینک زیر میتونید نمونه کد server.js رو مشاهده کنید.
https://nextjs.org/docs/advanced-features/custom-server
درباره getStaticProps هم باید بگم اگر قرار هست رویدادی رخ بده توسط کاربر انجامش ندید.
سرورمون که شخصی نیست. و بکند هم با php هست. جدا از این من این منبعی که دادید رو مطالع میکنم. و یک سوال دیگم داشتم ممنون میشم راهنمایی کنید.
اگر توی یک ص یک کامپوننتی رو ایمپورت و کنیم و ازش استفاده کنیم، اگر داخل این کامپوننت از بکند دیتایی گرفته باشیم توی کامپوننت هم باید از متود های getStaticProps() استفاده کنیم؟؟
منظورم از سرور شخصی خود سرور فیزیکی نبود😄 منظور یک vps یا ... هست. به بک اند تون هم این موضوع ارتباطی نداره چون قاعدتاافرانت اند از طریق api وصل میشه.
استفاده از getStaticProps و getServerSideProps صرفا برای صفحات (فایل های داخل فولدر pages) هست.
توی کامپوننت های بیرون این صفحات نمی تونید ازش ستفاده کنید.