NodeJS 下一个. JS-'.htaccess'文件?

5fjcxozz  于 2023-01-04  发布在  Node.js
关注(0)|答案(5)|浏览(132)

我刚刚开始使用我的第一个Next.JS应用程序。我使用了npx create-next-app,并制作了几个页面,当我意识到我不知道如何使用.htaccess文件时。我习惯于Apache为我处理这些事情,而仅仅将我的.htaccess文件放入Next.JS应用程序的根目录中并没有起到什么作用。我将如何着手设置一个类似于下面的.htaccess文件?

RewriteEngine on

RewriteRule ^profile/([a-z0-9]+) profile.html
ejk8hzay

ejk8hzay1#

如果您在项目中使用下一次导出到SSG****此.htaccess文件将修复重定向问题

RewriteEngine On
RewriteRule ^([^/]+)/$ $1.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.html
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
zhte4eai

zhte4eai2#

.htaccess文件是Apache特有的,所以没有Apache你就不能使用它们。你可以使用Apache as a proxy to your node.js app,但是你仍然不能使用.htaccess文件;您可以在Apache配置中配置RewriteRules,但是当您可以直接在应用程序逻辑中处理所有路由时,就不需要这样做了。
在node.js中,你不需要像Apache那样的单独的Web服务器,你的程序可以长时间运行,绑定到一个端口,监听和响应请求,这是Web服务器通常提供的主要功能。
Next.JS在这里提供了设置自定义路由的文档:https://nextjs.org/docs/#custom-server-and-routing

qnzebej0

qnzebej03#

如果您的服务器已经在使用Apache并且启用了mod_rewrite,您可以使用.htaccess

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteRule . /index.html [L]

</IfModule>

Source

u4dcyp6a

u4dcyp6a4#

你必须学会使用pm2:
1.你应该能够在你的ubuntu,centos等安装nvm。通过ssl:从https://github.com/nvm-sh/nvm开始

  1. nvm将给你的可能性来安装节点
    1.节点安装完成后,全局安装pm2。
  2. https://pm2.keymetrics.io/
    1.在项目根目录创建文件:ecosystem.config.js

生态系统配置js:

module.exports = {
apps : [
    {
        name: "your_server_name",
        script: "./server.js",
        watch: true,
        env_development: {
            "PORT": 3000,
            "NODE_ENV": "development"
        },
        env_production: {
            "PORT": 8001,
            "NODE_ENV": "production",
        }
    }
]}

. htaccess的外观如下所示:

DirectoryIndex disabled
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:8001/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:8001/$1 [P,L]

通过SSH登录您的网站:

ssh name@IP then password

如何运行pm2。

pm2 start ecosystem.config.js --env production

pm2 start ecosystem.config.js --env development

服务器中需要哪些文件:

rhfm7lfc

rhfm7lfc5#

最上面的答案对我没有帮助,因为我使用了多个级别的参数....
想象一下pages/{...complex}.tsx页面,其中complex是["a","b","c"]

DirectorySlash Off
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)/?$ $1.html

相关问题