Я впервые использую локальный сервер nginx для настройки веб-сайта, который я создаю, и у меня возникают проблемы с настройкой конфигурации nginx для обработки запросов URL-адресов так, как я хочу. Мой веб-сайт обслуживает несколько php-страниц, когда пользователь перемещается по веб-сайту. При разработке сайта изначально с использованием локального php-сервера я использовал GET-запросы с изменениями window.location.href для навигации по сайту. Например:
http://localhost:8000/shop.php?filter=all&sort=id_asc&page=3
Однако, поскольку это будет веб-сайт электронной коммерции для малого бизнеса, я хотел обрабатывать URL-адреса более четко и профессионально.
Структура моего сайта выглядит примерно так:
Веб-сайт:
->index.php
->shop.php
->about.php
->product-page.php
->/css/
->/javascript/
->/php/
Я хочу настроить nginx для маршрутизации URL-адресов следующим образом.
www.mywebsite.com -> routes to index.php
www.mywebsite.com/shop -> routes to shop.php
www.mywebsite.com/shop/anything -> routes to shop.php
www.mywebsite.com/about -> routes to about.php
www.mywebsite.com/product -> routes to product-page.php
www.mywebsite.com/product/anything -> routes to product-page.php
Я пробовал множество предложений за пару дней, прежде чем спросить здесь, но все потерпело неудачу по той или иной причине, 404, 500 внутренних ошибок и циклов перенаправления. Я надеюсь получить немного здесь, пока я перехожу к другим аспектам сайта, чтобы перестать биться головой о стену. Вот состояние моего nginx conf на данный момент:
server {
listen 80 ;
listen [::]:80 ;
server_name localhost;
root /var/www/html/reagansrockshop;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location = /shop {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index shop.php;
try_files $uri /shop.php;
}
location /shop/ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
try_files $uri /shop.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Как я мог решить эту проблему? И если есть лучший стандарт в структурировании веб-сайта и его URL-адресов, пожалуйста, дайте мне знать. Это мой первый веб-сайт и первый раз, когда я использую nginx, поэтому я немного наивен в отношении лучших практик.