我需要将此.htaccess规则转换为nginx规则:
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ navigation.php
RewriteRule .* - [E=HTTP_X_REQUESTED_WITH:%{HTTP:X-Requested-With}]
我使用了this在线转化工具,它提供了:
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^/(.*)$ /navigation.php;
}
HTTP_X_REQUESTED_WITH:$http_x_requested_with;
#ignored: "-" thing used or unknown variable in regex/rew
但结果在nginx 0.76中无法使用,我收到错误
unknown directive "setenv"
当我从我的nginx配置中删除最后一行时,脚本无法显示某些页面。
所以如果你能做转换,我真的很感激。
答案 0 :(得分:1)
使用Nginx,您无需像在Apache中那样重新映射。
你有没有看过IfIsEvil nginx页面?
要在nginx中应用规则之前测试文件不是静态文件或目录,真正简单的方法不是多方式 - 如果你喜欢,而是try_file指令(check if file exists in pitfall page)。
所以你应该从那个“规则”开始:
server {
root /var/www/domain.com;
location / {
HTTP_X_REQUESTED_WITH:$http_x_requested_with;
try_files $uri $uri/ /navigation.php;
}
}
现在你可能有其他一些地方通过fastcgi处理PHP文件,这可能是你需要将HTTP_X_REQUESTED_WITH作为fastcgi_param
传输的真实地方。