包含index.php中文件的Nginx重写错误

时间:2015-03-05 20:21:58

标签: javascript css .htaccess nginx relative-path

我有一个apache网络服务器,我在那里发了一个htaccess。我切换到NGINX,我做了NGINX配置。我的重写如下:

location /mvc/public {
     index index.php;

     try_files $uri $uri/ @rewrite;
 }

location @rewrite{
     rewrite ^/mvc/public/(.*)$ /mvc/public/index.php?url=$1;
}

这可以正常工作但现在我想要的其他文件包含在我的索引文件中,如css和其他一些脚本会出错。

我得到的错误是:

GET "example.com"/mvc/public/javascript/show/css/bootstrap.min.css 
GET "example.com"/mvc/public/javascript/show/css/simple-sidebar.css
GET "example.com"/mvc/public/javascript/show/css/custom.css 
GET "example.com"/mvc/public/javascript/show/js/bootstrap.min.js

当我去“example.com”/ mvc / public / javascript / show / examplecode时。 css的正确路径是“example.com”/ mvc / public / css,js是“example.com”/ mvc / public / js

我在Apache中使用的HTACCESS是:

Options -MultiViews
RewriteEngine On

RewriteBase /mvc/public

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

所以我的问题是如何让这个工作以及我做错了什么?

1 个答案:

答案 0 :(得分:1)

这根本不像重写问题。这看起来您的页面在其链接中具有相对URL。当你去:

/mvc/public/javascript/show/examplecode

相对网址为/mvc/public/javascript/show/,所以当你有css时:

<link rel="stylesheet" href="css/custom.css" type="text/css">

(注意href中没有前导/

相对URL被附加到基数的末尾,使其成为:

/mvc/public/javascript/show/css/custom.css 

因此,您需要将所有链接更改为绝对网址,或在页面标题中添加基础(在<head></head>内):

<base href="/mvc/public/" />