5

所以使用 apache 我有一个文件夹:

www.domain.com/folder/folder1/index.php?word=blahblah

我希望访问 www.domain.com/folder/folder1/blahblah 的用户被重定向到上述 URL,而不更改 URL。

因此,我在文件夹/文件夹 1/ 中有以下 .htaccess,它运行良好:

RewriteEngine on

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

RewriteRule ^(.+)$ index.php?word=$1

所以我想用 nginx 实现相同的功能,我使用了两个转换器: http ://www.anilcetin.com/convert-apache-htaccess-to-nginx/结果:

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 ^/(.+)$ /index.php?word=$1;
}

http://winginx.com/htaccess结果:

 if (!-e $request_filename){ rewrite ^(.+)$ /index.php?word=$1; }

现在,我尝试了两种方法,但都不起作用。我尝试将它们插入

location / {
}

或在

location /folder/folder1 {
}

或在

location ~ \.php$ {
}

在所有位置我都收到 404 错误

nginx 错误报告“从上游读取响应标头时主脚本未知”或“没有这样的文件或目录”。

有人可以启发我吗?

提前致谢!

4

1 回答 1

7

首先,不要使用if. 如果是邪恶的-> http://wiki.nginx.org/IfIsEvil

您可以使用以下重写规则来完成此操作。

rewrite ^/folder/folder1/(.*)$ /folder/folder1/index.php?word=$1 last;

将此重写规则放在您的location / {}块上方

于 2013-01-29T15:47:39.147 回答