2017-04-09 279 views
0

我对Nignx和LEMP堆栈非常陌生,并且努力编写干净的URL。
我想重写:
https://example.com/search/something&1
https://example.com/search.php?query=something&page=1
我如何着手实现这一目标?Nginx的URL重写

+0

请检查你的帖子。你的目标和重定向url都是一样的 –

+0

你想把这个'https:// example.com/search/something&1'改为'https://example.com/search.php?query = something&page = 1'或者相反 –

+0

@SahilGulati更新了我的问题:) – CodeWalker

回答

1

rewrite ^/search/(.*)&(.*)$ /search.php?query=$1&page=$2

我想你向后想着它。您要重写/search/something&1 =>/search.php?query=something&page=1

在你的代码会产生看起来像/search/something&1,然后nginx的将其改写成与URL查询参数,PHP能够理解普通链接的链接。

+0

它可以正常工作,但是我的所有外部资源如css&js文件无法加载。 – CodeWalker

+0

@CodeWalker你需要一个单独的位置块,像这个位置〜* \。(?: css | js)$ {},它查找以.css或.js结尾的请求并正常发送它们,在重写之前执行此操作,你可以使用break;以确保没有更晚的规则得到处理。 –

0

希望这会帮助你。

([A-Za-z]+)匹配所有小写或大写字母,一个或多个。

([\d]+)匹配一位或一位以上的数字。

rewrite /search/([A-Za-z]+)&([\d]+) /search.php?query=$1&page=$2; 

这将重定向只有$ REQUEST_URI这遵循这些模式,如

/search/something&12 
/search/xxxyAAA&1212 
/search/XXyyZZ&12 

而且并不妨碍你CSS,JS执行请求重写。