我试图移植此重写规则以用于nginx Web服务器。将Apache htaccess重写条件转换为nginx
RewriteBase /srv/www/htdocs
RewriteCond %{REQUEST_URI} ^/(files.*)$
RewriteRule ^(.*)$ %1 [L]
我不知道如何在nginx.conf中解决这个问题。 任何人都可以帮忙吗?
感谢,帕特里斯
我试图移植此重写规则以用于nginx Web服务器。将Apache htaccess重写条件转换为nginx
RewriteBase /srv/www/htdocs
RewriteCond %{REQUEST_URI} ^/(files.*)$
RewriteRule ^(.*)$ %1 [L]
我不知道如何在nginx.conf中解决这个问题。 任何人都可以帮忙吗?
感谢,帕特里斯
试试这个:
if ($uri ~ "^/(files.*)$"){
set $rule_0 1$rule_0;
set $bref_1 $1;
}
if ($rule_0 = "1"){
rewrite ^/(.*)$ /$bref_1 last;
}
来源:http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
这可能是更简单:
if ($uri ~ "^/(files.*)$") {
rewrite ^/(.*)$ /$1 last;
}
感谢您的快速解答!最后,我解决了类似于Sergeis建议的这个问题,但是嵌套了一个条件。
location/{
root /srv/www/htdocs;
# all under "/files/" breaks further processing
location ~ ^/files(.*)$ {
break;
}
# rewrite rules for all paths not under "/files/"
if (!-e $request_filename) {
rewrite ^/([^/\.]+)((\/?)(.*?))$ /process.php?id=$1&path=$2 last;
}
}
只是好奇;规则应该做什么?因为我看它的方式,它会将'/ files.example'这样的urls改写成'/ files/example',这显然是无用的。 – Gerben 2012-02-02 19:00:04