我花了很多年的时间在谷歌上搜索任何信息,并且问了一些人(在任何人建议我去之前)。Nginx重写404
我的nginx.conf中不能正常工作的位在下方。 什么工作:重写为BlogHome,Home和About。
什么不工作 - 重写为C_ReadBlogURL和C_ReadAllPosts。由于某些原因,这两个都是404,尽管路径是正确的。我不明白为什么 - 而且我一直在困惑这一整天。我认为这可能与他们作为php文件有关,但我不知道。
任何帮助,将不胜感激:)
server {
listen 80;
server_name blog.example.com;
root /usr/share/nginx/www/example;
index /views/Read/BlogHome.php;
location/{
rewrite ^/?$ /views/Read/BlogHome.php last; break;
rewrite ^/(.+)/?$ /controllers/read/C_ReadBlogURL.php?url=$1 last; break;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
server {
listen 80;
server_name example.com;
root /usr/share/nginx/www/example;
index /controllers/read/C_ReadLatestPost.php;
location ~ ^(/posts\.php) {
rewrite ^(/posts\.php) /controllers/read/C_ReadAllPosts.php?type=$arg_type last; break;
}
location ~ ^/?$ {
rewrite ^/?$ /controllers/read/C_ReadLatestPost.php last; break;
}
location ~ ^(/about)/?$ {
rewrite ^(/about)/?$ /views/Read/About.php last; break;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
您好 - 感谢您的回答。 重写^(/ posts.php)/controllers/read/C_ReadAllPosts.php?type=$arg_type last; break;重写^ /(。+)/?$ /controllers/read/C_ReadBlogURL.php?url=$1 last;打破; 如果我把任何一个放在前面 - 那么最上面的那个会工作,而下面的不会。如果我抽出时间,那么它默认为最后一个。我不知道发生了什么事情:( – user1438377
我甚至让下面的规则更详细:[^ \。php] - 它仍然没有帮助。我不明白为什么两个规则不能一起工作。虽然 – user1438377
您需要删除那些“break”,当然,请注意,您的第二个正则表达式匹配任何非空的uri,但第一个正则表达式只匹配给定的字符串“/posts.php”,所以我认为您的请求?可能没有“/posts.php”,在它的URI您使用的同时,跳出后,以测试规则,要求 –