# Cloudflare Pages Frontend > [!warning] Notice > Choose one of the following methods ## Deploy Worker with Frontend Assets Refer to [Deploy Worker](/en/guide/cli/worker#deploy-worker-with-frontend-optional) ## Separate Frontend and Backend Deployment > [!warning] Important: SPA Mode > This project is a Single-Page Application (SPA). If you deploy manually via the Cloudflare dashboard, **you must set "Not Found handling" to `Single-page application (SPA)` in the advanced options**, otherwise refreshing the page or directly accessing sub-paths like `/admin` will return a 404 error. > When deploying via CLI (`wrangler pages deploy`), this is handled automatically and no extra configuration is needed. > > ![pages spa setting](/ui_install/pages-spa-setting.jpg) The first deployment will prompt you to create a project. For the `production` branch, enter `production`. ```bash cd frontend pnpm install cp .env.example .env.prod ``` Modify the `.env.prod` file. Change `VITE_API_BASE` to the `worker` `url` created in the previous step. Do not add `/` at the end. For example: `VITE_API_BASE=https://xxx.xxx.workers.dev` ```bash pnpm build --emptyOutDir # The first deployment will prompt you to create a project, for production branch enter production pnpm run deploy ``` After deployment, you can see your project in the Cloudflare console. You can configure a custom domain for `pages`. ![pages](/readme_assets/pages.png) ## Forward Backend Requests Through Page Functions Forwarding requests from page functions to the worker backend can achieve faster response times. The first deployment will prompt you to create a project. For the `production` branch, enter `production`. If your worker backend name is not `cloudflare_temp_email`, please modify `pages/wrangler.toml`. ```bash cd frontend pnpm install # If you want to enable Cloudflare Zero Trust, you need to use pnpm build:pages:nopwa to disable caching pnpm build:pages cd ../pages pnpm run deploy ```