nginx url 重写(无重定向)
nginx url rewrite (No redirection )
嗨,我想将 nginx 重写为 fllowing
至
http://my-domain/rates/callrates.php?c=Canada
用户会将 url 视为 http://my-domain/Canada
并且 php 将执行以下 url
中的页面
http://my-domain/rates/callrates.php?c=Canada
如何在 nginx.conf 中启用此功能?
</p>
<pre><code>server
{
listen 80;
server_name my-domain.com;
access_log /home/www/my-domain/logs/access.log;
error_log /home/www/my-domain/logs/error.log;
root /home/www/my-domain/public_html;
location / {
index index.php login.php;
try_files $uri $uri/ $uri.php?$query_string @extensionless-php;
error_page 404 /404.php;
}
location ~* ^/(?<country>\w+)$ {
rewrite ^ /testring/callrates.php?c=$country last;
}
location ~ \.html$
{
if (!-f $request_filename)
{
rewrite ^(.*)\.html$ .php last;
}
}
location ~ .*\.php$
{ include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/r2wconnect.com/public_html$fastcgi_script_name;
}
location @extensionless-php
{
rewrite ^(.*)$ .php last;
}
}
假设您已经有一个有效的 PHP 配置...
如果您的域不执行任何其他操作,则默认操作可能是通过以下方式调用脚本:
location / {
try_files $uri /rates/callrates.php?c=$uri;
}
以上的副作用是留在前导/
。
如果你想让规则更具体,你可以用正则表达式保护它(它也能正确提取国家名称):
location ~* ^/(?<country>\w+)$ {
rewrite ^ /rates/callrates.php?q=$country last;
}
嗨,我想将 nginx 重写为 fllowing
至
http://my-domain/rates/callrates.php?c=Canada
用户会将 url 视为 http://my-domain/Canada 并且 php 将执行以下 url
中的页面http://my-domain/rates/callrates.php?c=Canada
如何在 nginx.conf 中启用此功能?
</p>
<pre><code>server
{
listen 80;
server_name my-domain.com;
access_log /home/www/my-domain/logs/access.log;
error_log /home/www/my-domain/logs/error.log;
root /home/www/my-domain/public_html;
location / {
index index.php login.php;
try_files $uri $uri/ $uri.php?$query_string @extensionless-php;
error_page 404 /404.php;
}
location ~* ^/(?<country>\w+)$ {
rewrite ^ /testring/callrates.php?c=$country last;
}
location ~ \.html$
{
if (!-f $request_filename)
{
rewrite ^(.*)\.html$ .php last;
}
}
location ~ .*\.php$
{ include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/r2wconnect.com/public_html$fastcgi_script_name;
}
location @extensionless-php
{
rewrite ^(.*)$ .php last;
}
}
假设您已经有一个有效的 PHP 配置...
如果您的域不执行任何其他操作,则默认操作可能是通过以下方式调用脚本:
location / {
try_files $uri /rates/callrates.php?c=$uri;
}
以上的副作用是留在前导/
。
如果你想让规则更具体,你可以用正则表达式保护它(它也能正确提取国家名称):
location ~* ^/(?<country>\w+)$ {
rewrite ^ /rates/callrates.php?q=$country last;
}