nginx-用php文件重写js文件
对于apache,我使用config.php文件根据域重写config.js文件,config.js包含占位符,占位符被nginx-用php文件重写js文件,nginx,Nginx,对于apache,我使用config.php文件根据域重写config.js文件,config.js包含占位符,占位符被RewriteRule指令替换,这是.htaccess文件: <IfModule mod_rewrite.c> RewriteBase /foo RewriteEngine On RewriteRule config.js config.php [L,QSA] </IfModule> 但是有内部服务器错误 谢谢所有nginx u
RewriteRule
指令替换,这是.htaccess文件:
<IfModule mod_rewrite.c>
RewriteBase /foo
RewriteEngine On
RewriteRule config.js config.php [L,QSA]
</IfModule>
但是有内部服务器错误
谢谢所有nginx uri都以斜杠开头。使用
rewrite config.js config.php
将URI从/foo/config.js
重写为config.php
。nginx无法处理该URI,导致内部服务器错误
rewrite
指令的第一个参数始终被视为正则表达式,其中点匹配任何符号。因此,您的rewrite
规则将匹配包含config*js
子字符串的任何字符串。我认为这不是你真正想要的
rewrite
指令的第二个参数是一个全新的URI,而不是字符串的替换部分。要进行替换,请使用类似于重写^(.*)旧字符串(.*)$$1新字符串$2
因为您正在将请求重写为PHP脚本,所以应该强制nginx使用定义PHP-FPM处理程序的位置来处理新的URI。为此,您应该使用last
标志,而不是带有rewrite
指令的break
标志
综上所述,你需要
位置/foo{
别名/src/www/foo;
index.html;
最后重写^/foo/config\.js$/foo/config.php;
}
再来一张。作为nginx文档:
当位置与指令值的最后一部分匹配时:
location /images/ {
alias /data/w3/images/;
}
最好改用root指令:
location /images/ {
root /data/w3;
}
因此最好使用
root/src/www
而不是别名/src/www/foo如果foo
子字符串真的相等,则在此位置
块中编写code>。对不起,我写的是最后一个而不是中断
,但没有在配置代码块中更改它。更新了一个答案。谢谢回复,这样当我转到我看到的文件配置。php@hellb0y77那么您还没有将nginx设置为使用PHP-FPM(或任何其他PHP处理程序)吗?您应该在服务器上安装php fpm,并定义一个特殊的位置~\.php${…}
来使用它(这是最常见的方法,例如,还有其他选择)。默认nginx配置应该有一个使用PHP-FPM的示例(默认情况下注释)。这超出了您的问题范围,请检查one.nginx是否使用php fpm,我已尝试将phpinfo文件放置在config.php的同一路径并进行工作。@hellb0y77是否有重写。。。最后代码>,而不是重写。。。中断代码>?也许您的浏览器缓存了响应?是的rewrite^/foo/config.js$/foo/config.php last代码>
location /images/ {
root /data/w3;
}