[英]Rewrite directory location to a php file nginx
I'm having difficulty converting this .htaccess in /thumb directory to nginx to work. 我在将/ thumb目录中的.htaccess转换为nginx时遇到困难。
.htaccess file: .htaccess文件:
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* ../thumb.php [L,QSA]
</IfModule>
What I tried: 我试过的
location /thumb {
rewrite ^(.*)$ /thumb.php;
}
location /thumb {
index thumb.php;
rewrite ^/thumb/(.*)$ /thumb.php;
}
These won't work. 这些行不通。
edited: I think I found the problem but I'm still puzzle on the solutions. 编辑:我认为我找到了问题,但我仍然对解决方案感到困惑。 I made a small echo php file to test, all result that does not end in extension seem to work. 我做了一个小的echo PHP文件进行测试,所有未以扩展名结尾的结果似乎都能正常工作。 Any url that end with any extension will return a 404. 任何以任何扩展名结尾的网址都将返回404。
http://www.example.com/thumb work http://www.example.com/thumb工作
http://www.example.com/thumb/jsdlfjfds work http://www.example.com/thumb/jsdlfjfds工作
http://www.example.com/thumb/jsdlfjfds/sfjlkdfjldf work http://www.example.com/thumb/jsdlfjfds/sfjlkdfjldf工作
http://www.example.com/thumb/asldkjfls.png not work http://www.example.com/thumb/asldkjfls.png不起作用
http://www.example.com/thumb/zxcvmfds/asldkjfls.jpg not work http://www.example.com/thumb/zxcvmfds/asldkjfls.jpg不起作用
How do I rewrite full url, including all extension to /thumb.php? 如何重写完整的url,包括/thumb.php的所有扩展名? I always thought this regex mean full url with extension ^(.*)$? 我一直以为这个正则表达式的意思是带有扩展名^(。*)$的完整URL?
thumb.php thumb.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
There was another location that match the file extensions and it seem the two can't co-exist. 还有另一个与文件扩展名匹配的位置,看来这两个文件不能并存。 They need to be put in a nested location. 它们需要放置在嵌套位置。
location /thumb {
location ~* ^.+\.(jpg|jpeg|gif|png|bmp|webp|svg|ai|eps)$ {
access_log off;
log_not_found off;
expires max;
rewrite ^(.*)$ /thumb.php;
}
rewrite ^(.*)$ /thumb.php;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.