سلام دوستان.
من یه پروژه دارم که UI رو React js کار کردم و سمت سرور هم laravel.این دوتا پروژه جدا از هم هستن چطور میتونم روی Cpanel آپلودشون کنم؟
ممنون میشم راهنمایی کنید.
@mrkhodarahmii سلام وقتتون بخیر.
این که پروژه لاراول رو بزارید روی سابدومین یک راهحله ولی من خودم راه زیر رو ترجیح میدم.
کاری که میخوایم انجام بدیم اینه که پروژه لاراول روی آدرس https://domain.com/api
بیاد بالا و پروژه ریکت هم روی آدرس اصلی
حالا فایل index.php رو باز کنید و یک سری تغییرات باید داخل این فایل بدید:
حالا اتفاقی که میافته اینه که برای دسترسی به api باید توی آدرس دو تا /api وارد کنید یعنی مثلا https://domain.com/api/api
. چرا ؟ چون یکیش مال اون پوشهای index.php توشه هست و اون یکی هم برای اینه که کلا آدرسهای api یک پرفیکس /api دارند.
حالا راه حلش چیه ؟
چون برنامه بکاند فقط API هست کاری که میکنیم اینه که اون prefix که مال روتهای api.php هست رو برمیداریم طبق مراحل زیر:
app\Providers\RouteServiceProvider
بشید و از اونجا تابع mapApiRoutes رو پیدا کنید و اون تابع prefix داخلش رو کلا حذف کنید./web
استفاده میکردم.حالا پروژه بکاندتون باید سر جاش درست باشه توی آدرس https://domain.com/api
. یه سری تنظیمات و تغییرات هم باید برای فایلسیستم و آپلود فایل و اینا بدید که با سرچ میتونید درش بیارید ولی اگر نتونستید یا مشکلی داشتید توی همین گفتوگو اشاره کنید تا کمکتون کنم.
برای آپلود پروژه ریکت توی هاست هم میتونید از این لینک استفاده کنید.
بازم اگر مشکلی بود اشاره کنید در خدمتم.
درود...
برای استفاده هر دو این پروژه اصلی رو هاست اصلی و زیر مجموعه پروژه روی ساب دامین هاست قرار بده...
@endworld ممنون از پاسختون.
یعنی پروژه react رو روی هاست قرار بدم؟ بعد برای API گرفتن از Laravel به مشکل نمیخورم؟ در کل اگر راه بهتری هست ممنون میشم معرفی کنید.
@mrkhodarahmii
سلام
نه به مشکل نمیخورید
پروژه react رو آپلود کنید و لاراول رو روی ساب دامین آپلود کنید.
@mrkhodarahmii سلام وقتتون بخیر.
این که پروژه لاراول رو بزارید روی سابدومین یک راهحله ولی من خودم راه زیر رو ترجیح میدم.
کاری که میخوایم انجام بدیم اینه که پروژه لاراول روی آدرس https://domain.com/api
بیاد بالا و پروژه ریکت هم روی آدرس اصلی
حالا فایل index.php رو باز کنید و یک سری تغییرات باید داخل این فایل بدید:
حالا اتفاقی که میافته اینه که برای دسترسی به api باید توی آدرس دو تا /api وارد کنید یعنی مثلا https://domain.com/api/api
. چرا ؟ چون یکیش مال اون پوشهای index.php توشه هست و اون یکی هم برای اینه که کلا آدرسهای api یک پرفیکس /api دارند.
حالا راه حلش چیه ؟
چون برنامه بکاند فقط API هست کاری که میکنیم اینه که اون prefix که مال روتهای api.php هست رو برمیداریم طبق مراحل زیر:
app\Providers\RouteServiceProvider
بشید و از اونجا تابع mapApiRoutes رو پیدا کنید و اون تابع prefix داخلش رو کلا حذف کنید./web
استفاده میکردم.حالا پروژه بکاندتون باید سر جاش درست باشه توی آدرس https://domain.com/api
. یه سری تنظیمات و تغییرات هم باید برای فایلسیستم و آپلود فایل و اینا بدید که با سرچ میتونید درش بیارید ولی اگر نتونستید یا مشکلی داشتید توی همین گفتوگو اشاره کنید تا کمکتون کنم.
برای آپلود پروژه ریکت توی هاست هم میتونید از این لینک استفاده کنید.
بازم اگر مشکلی بود اشاره کنید در خدمتم.
@mrkhodarahmii
آره... مشکلی پیش نمیاد و این روش متداول هستش...
روش @MehdiAghighi عالیه...
برای دریافت خروجی اطلاعات در ری اکت کافیه API مورد نظر رو در لاراول تعریف کنید و آن را صدا بزنید...
سلام @MehdiAghighi
وقت بخیر
ممنونم از توضیحات خوبتون 👌
من تمام کارهارو انجام دادم و مطالبتون کامل بود api هم تست کردم درست جواب می ده البته روی متد get اما روی متد post خطا CORS دارم
Access to XMLHttpRequest at 'https://example.ir/api/payment' from origin 'https://www.example.ir' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
post رو با axios نوشتم
const config={'headers':{"Content-Type":"application/json",
"Access-Control-Allow-Origin":"*",
"Access-Control-Allow-Methods" : "POST",
'Access-Control-Allow-Headers':"*",
}}
axios.defaults.withCredentials=true;
axios.post('https://nedamoattarian.ir/api/payment',data,config)
در فایل cors.php هم credential رو true کردم.
'supports_credentials' => true,
تو قسمت Network در Developer Tools گوگل کروم هر دو Request رو خطا دارم هم متد Options و هم Post
لوکال مشکلی نداشتم. خطا رو روی هاست دارم.
ممنون میشم راهنمایی کنید.
@sajjad.haghani
جواب آقای @MehdiAghighi اصلا حرفه ای نیست . بهتره ری اکت و لاراول رو در پوشه های متفاوت نگه دارید و توی تنظیمات وب سرور تنظیم کنید که اگر هر درخواستی برای api/
اومد درخواست رو هدایت کنه به پوشه public لاراول . برای مثال این کار توی nginx خیلی راحته
`
location /api/ {
root /var/www/html/laravelfolder
try_files $uri $uri/ /index.php?$args;
}
location ~ /api/\.php$ {
root /var/www/html/laravelfolder
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
`
@h.r.hassani
دقت کنید به سوال گفتن سیپنل.
داخل سیپنل شما دسترسی به کانفیگ وبسرور نداری و معمولا از لایت اسپید و اپاچی استفاده میکنن اصلا انجینکسی در کار نیست و اگر هم باشه در نقش پراکسی سرور عمل میکنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟