برای تبدیل تعدادی از قوانین آپاچی به nginx به صورت زیر عمل کنید. برای تبدیل صحیح قوانین بازنویسی آپاچی به پیکربندی Nginx، باید مطمئن شوید که منطق به درستی به دستورالعمل های Nginx ترجمه شده است. پیکربندی Nginx کار پیچیده ای نیست، اما برای مدیریت صحیح شرایط و بازنویسی به برخی تنظیمات نیاز دارد.
server {
listen 80;
server_name example.com;
root /path/to/your/document/root;
# Serve files from the public directory if they have an extension
location ~* \.\w+$ {
rewrite ^(.*)$ /public/$1 break;
}
# Check if the request is for a directory or file and handle accordingly
location / {
if (-d $request_filename) {
break;
}
if (-f $request_filename) {
break;
}
# Route all other requests to server.php
try_files $uri $uri/ /server.php;
}
}
تغییر کرد:
بلوک مکان با regex ~* .\w+$
درخواستهای فایلهای دارای پسوند را مدیریت میکند و آنها را به فهرست عمومی هدایت میکند.
سرورهای مجازی رادیب با بیش از 13 لوکیشن روز دنیا و کیفیت باور نکردنی + تحویل آنی همین حالا پلن های سرور مجازی را مشاهده کنید
location ~* \.\w+$ {
rewrite ^(.*)$ /public/$1 break;
}
بلوک بررسی می کند که آیا درخواست برای یک فهرست است یا یک فایل . اگر اینطور باشد، درخواست به طور معمول انجام می شود. اگر نه، درخواست را به server.php هدایت می کند.
location / {
if (-d $request_filename) {
break;
}
if (-f $request_filename) {
break;
}
# Route all other requests to server.php
try_files $uri $uri/ /server.php;
}
مشاهده می کنید، با استفاده از دستور if در داخل بلوک / location، شرایط بازنویسی Apache را برای بررسی دایرکتوری ها و فایل ها تقلید می کنیم، که در صورت وجود منبع درخواستی، از مسیریابی غیرضروری به server.php جلوگیری می کند.
فراموش نکنید که پیکربندی را دوباره بارگیری کنید:
sudo systemctl reload nginx
# or
sudo systemctl restart nginx