Php Nginx为搜索引擎优化友好的URL结构重写规则-WordPress和另一个Web应用程序

Php Nginx为搜索引擎优化友好的URL结构重写规则-WordPress和另一个Web应用程序,php,html,wordpress,nginx,rewrite,Php,Html,Wordpress,Nginx,Rewrite,我已经在我的root example.com/网站上安装了WordPress 此外,我还有另一个Web应用程序,它位于example.com/my-app/上,有example.com/my-app/file.php?arg=value等难看的链接可供访问 我如何使我的应用程序SEO友好的URI结构像下面的示例一样工作 example.com/my-app/file.php?arg=value to example.com/my-app/value/ 目前,若我访问example.com/my

我已经在我的root example.com/网站上安装了WordPress

此外,我还有另一个Web应用程序,它位于example.com/my-app/上,有example.com/my-app/file.php?arg=value等难看的链接可供访问

我如何使我的应用程序SEO友好的URI结构像下面的示例一样工作

example.com/my-app/file.php?arg=value
to
example.com/my-app/value/
目前,若我访问example.com/my-app/value/它会将我重定向到我的WordPress帖子,其中包含一些/value/字符。为什么?有没有办法让它工作起来

我的域Nginx指令如下所示:

location / {
  try_files $uri $uri/ /index.php?$args;
  fastcgi_read_timeout 300;
}

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
有什么想法吗?我是否应该使用Ajax导航和切换案例?HTML5 pushState()API呢?有工作实例吗


谢谢你的帮助

WordPress和
my app
都在一个公共文档根目录下工作,这使事情变得简单

try\u files
指令的最后一个元素是(例如)SEO友好URL的默认操作

对于以
/my app
开头的URI,您需要一个不同的默认处理程序,该处理程序是使用
位置/my app
块实现的,例如:

location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/my-app/(.*)$ /my-app/file.php?arg=$1;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
在上述情况下,
arg
被设置为值
/my app/value
。如果确实必须提取URI的最后一部分,请添加一个带重写的命名位置,例如:

location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/my-app/(.*)$ /my-app/file.php?arg=$1;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
注意,
fastcgi\u read\u超时300(在您的问题中)需要放在
位置~\.php$
块中,或者放在一个外部块中才能生效


有关上面使用的
nginx
指令的详细信息,请参阅。

WordPress和
my app
都在一个通用文档根目录下工作,这使事情变得简单

try\u files
指令的最后一个元素是(例如)SEO友好URL的默认操作

对于以
/my app
开头的URI,您需要一个不同的默认处理程序,该处理程序是使用
位置/my app
块实现的,例如:

location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/my-app/(.*)$ /my-app/file.php?arg=$1;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
在上述情况下,
arg
被设置为值
/my app/value
。如果确实必须提取URI的最后一部分,请添加一个带重写的命名位置,例如:

location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
location / {
    try_files $uri $uri/ /index.php?$args;
}
location /my-app {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/my-app/(.*)$ /my-app/file.php?arg=$1;
}
location ~ \.php$ {
    try_files $uri =404;
    ...
}
注意,
fastcgi\u read\u超时300(在您的问题中)需要放在
位置~\.php$
块中,或者放在一个外部块中才能生效

有关上述使用的
nginx
指令的详细信息,请参阅