اسدی
3 سال پیش توسط اسدی مطرح شد
2 پاسخ

ریدایرکت کلی در لاراول

سلام دوستان چطور میتونم ریدایرکتی که مثلا در افزونه یواست وردپرس هست رو در لاراول پیاده کنم؟
در واقع میخوام روت قدیم و روت جدید رو از کاربر بگیرم و ذخیره کنم و این روت قبلی رو ریدایرکت 301 بدم


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

روش های مختلفی میشه پیاده سازیش کرد. پیشنهادم بنده اینه که:

اول یک جدول داشته باشید که اطلاعات url قدیمی و url که بایدبهش ریدایرکت بشه رو همراه با سایر اطلاعات مثلا وضعیت فعال بودنش یا نوع ریدایرکت ‌۳۰۱ باشه یا ۳۰۲ و ... ذخیره کنید.

بعد یک Middleware ایجاد کنید و همه درخواست ها رو از این middleware عبور بدید و چک کنید که آیا مسیر درخواستی در لیست url هایی که باید ریدایرکت بشن هست یا نه. اگر بود، در همون فایل middleware با استفاده از دستورات لاارول می‌تونید به راحتی این کار رو انجام بدید:

public function handle($request, Closure $next)    {
        if (آدرس در لیست ریدایرکت ها بود) {
            return redirect($new_url, 301);
        }
        return $next($request);
    }

برای بهبود عملکرد و بالابردن performance هم پیشنهاد میشه حتما این اطلاعات رو Cache کنید تا به ازای هر درخواست یک کوئری جداگانه به دیتابیس برای گرفتن لیست URL های ریدایرکتی نداشته باشید.


Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 3 سال پیش آپدیت شد
0

درود
برای ریدایرکت کردن به یه آدرس جدید میتونی داخل فایل .htaccess این کارو انجام بدی.

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com/ [R=301,L]

این لینک هم مفیده
https://rokaweb.ir/seo-laravel-htacess/


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

روش های مختلفی میشه پیاده سازیش کرد. پیشنهادم بنده اینه که:

اول یک جدول داشته باشید که اطلاعات url قدیمی و url که بایدبهش ریدایرکت بشه رو همراه با سایر اطلاعات مثلا وضعیت فعال بودنش یا نوع ریدایرکت ‌۳۰۱ باشه یا ۳۰۲ و ... ذخیره کنید.

بعد یک Middleware ایجاد کنید و همه درخواست ها رو از این middleware عبور بدید و چک کنید که آیا مسیر درخواستی در لیست url هایی که باید ریدایرکت بشن هست یا نه. اگر بود، در همون فایل middleware با استفاده از دستورات لاارول می‌تونید به راحتی این کار رو انجام بدید:

public function handle($request, Closure $next)    {
        if (آدرس در لیست ریدایرکت ها بود) {
            return redirect($new_url, 301);
        }
        return $next($request);
    }

برای بهبود عملکرد و بالابردن performance هم پیشنهاد میشه حتما این اطلاعات رو Cache کنید تا به ازای هر درخواست یک کوئری جداگانه به دیتابیس برای گرفتن لیست URL های ریدایرکتی نداشته باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام