我有一个angularjs应用程序,它也有一个博客。此网址显示
下的所有博文http://example.com/blog/
下的特定博客文章
http://example.com/blog/example-blog-post-title
现在我正在为搜索引擎优化目的预编译博客文章的HTML,我想完全与我的主应用程序分开提供它们:
...
root "/home/ubuntu/client/public";
location / { ## Handle default requests ##
try_files $uri $uri/ /index.html;
}
location /blog { ## serve precompiled blog HTML
alias /home/ubuntu/bloghtml;
try_files $uri.html $uri/ index.html;
}
...
这样,通过转到http://example.com/blog/example-blog-post-title nginx成功提供文件/home/ubuntu/bloghtml/example-blog-post-title.html
然而问题是,在这种情况下,nginx没有正确地将http://example.com/blog/下的博客帖子列表路由到我的主角应用程序,我在该URL上得到错误403.
我尝试在conf文件中将location /blog
更改为location /blog/
,这使得http://example.com/blog/工作,但我在http://example.com/blog/example-blog-post-title上得到404错误
如何才能使这两种情况都有效?
答案 0 :(得分:1)
如果您将位置从/blog
更改为/blog/
,则需要记住将别名从/home/ubuntu/bloghtml
更改为/home/ubuntu/bloghtml/
。别名和位置需要具有相同的结尾,否则计算的路径名是错误的。
由于some known issues,我尽量避免在同一个区块中使用alias
和try_files
。您可以考虑在路径blog
中创建最后一个目录,以便您可以使用root
。
我认为您的角度应用是/index.html
,在这种情况下,您的try_files
语句不正确。 $url/
将导致/blog/index.html
尝试index
(假设您有index.html
指令)并且/
缺少前导location /blog {
alias /home/ubuntu/bloghtml;
try_files $uri.html /index.html;
}
。
我建议你试试:
alias
但考虑设计出themes -> mytheme -> functions.php
<?php
function testfunc()
{
echo "Test Function";
exit;
}
add_action( 'init', 'testfunc' );
?>
指令。