htaccess 重写为 nginx 错误
htaccess rewrite to nginx bugs
我的旧 .htaccess 文件中有这段代码
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([a-z0-9]+) [NC]
RewriteRule ^ %1/%2/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/?$ /index.php?page= [L,NC]
我最近升级到 nginx,我在我的配置中使用了以下代码,而不是 Apache 重写规则。
rewrite ^/(.*)$ /index.php?page=$args? last;
这也很好用,但是当我尝试在 /Style/Main.css 中加载我的样式表时,它会尝试将文件作为获取请求加载。我该如何解决这个问题,使其不再执行此操作?
你需要一个try_files
来检查请求的url(在你的情况下,它将是css,js等)是否存在,然后再传递它重写。尝试类似的东西:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?page=$args? last;
}
我的旧 .htaccess 文件中有这段代码
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([a-z0-9]+) [NC]
RewriteRule ^ %1/%2/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/?$ /index.php?page= [L,NC]
我最近升级到 nginx,我在我的配置中使用了以下代码,而不是 Apache 重写规则。
rewrite ^/(.*)$ /index.php?page=$args? last;
这也很好用,但是当我尝试在 /Style/Main.css 中加载我的样式表时,它会尝试将文件作为获取请求加载。我该如何解决这个问题,使其不再执行此操作?
你需要一个try_files
来检查请求的url(在你的情况下,它将是css,js等)是否存在,然后再传递它重写。尝试类似的东西:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?page=$args? last;
}