我花了很多年的時間在谷歌上搜索任何信息,並且問了一些人(在任何人建議我去之前)。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您使用的同時,跳出後,以測試規則,要求 –