将mod_rewrite规则转换为nginx规则

时间:2014-05-07 05:03:11

标签: nginx

从apache切换到nginx,我是nginx的新手,仍然试图找出规则。我需要将旧网站的.htaccess转换为nginx语法。我使用了一个在线语法转换器并得到了它,但它没有用。它试图下载* .html文件,而不是将其解析为php并显示它。

的.htaccess

Options +FollowSymLinks -MultiViews

RewriteEngine On

RewriteCond %{HTTP_HOST}  www.example.com [nocase]
RewriteRule ^(.*)      http://example.com/$1 [last,redirect=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+).html$ index.php?q=$1 [L,QSA]

我破坏了代码我试图转换为nginx并且我坚持

location / { 
if ($http_host ~ "www.example.com"){ 
rewrite ^/(.*) http://example.com/$1 redirect; } 
if (!-e $request_filename){ 
rewrite ^/([^.]+).html$ /index.php?q=$1 break; } 
}

2 个答案:

答案 0 :(得分:0)

server_name example.com;
return 301 $scheme://www.example.com$request_uri;
if (!-e $request_filename)
{
    rewrite ^/([^.]+).html$ /index.php?q=$1 last;
}

答案 1 :(得分:0)

查看try_files

try_files $uri $uri/ /index.php?q=$uri&$args;

它将从左到右尝试每个参数。如果没有找到文件/目录,它将使用uri和查询字符串默认为/index.php。