我希望nginx将网址重写为特定的php文件,该文件可以由第一个斜杠之前的内容确定
例如:
testing.com/test
或test.com/test
将被重写为test.php
testing.com/test2/variable/another-variable
将被重写为/test2.php?q=variable/another-variable
然后我将使用PHP爆炸q GET
参数。
我目前尝试过的是:
location / {
try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;
}
这在上面显示的示例1中有效,但在示例2中返回了404,但URL更复杂。
答案 0 :(得分:1)
您可以使用带有location
指令的命名try_files
来实现一个或多个rewrite
语句。有关详细信息,请参见this document。
例如:
location / {
try_files $uri $uri/ $uri.html @php;
}
location @php {
rewrite ^(/[^/]+)$ $1.php last;
rewrite ^(/[^/]+)/(.*)$ $1.php?q=$2 last;
}
location ~ \.php$ {
try_files $uri =404;
...
}
rewrite
语句按顺序求值。第二条try_files
语句可确保PHP文件确实存在,并避免使用passing uncontrolled requests to PHP。