簡體   English   中英

用於SEO友好URL結構的Nginx重寫規則-WordPress和另一個Web應用程序

[英]Nginx rewrite rules for SEO friendly URL structure - WordPress and another Web application

我在我的根example.com/網站上安裝了WordPress。

另外,我在example.com/my-app/上有另一個Web應用程序,該應用程序具有難看的鏈接,例如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 /的某些字符。 為什么? 反正有沒有讓這個工作?

我的domain 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_files指令的最后一個元素是(例如)SEO友好URL的默認操作。

您需要以/my-app開頭的URI的其他默認處理/my-app ,這是使用location /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;
    ...
}

在上述情況下, arg設置為/my-app/value 如果確實必須提取URI的最后一部分,請添加帶有重寫的命名位置,例如:

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_read_timeout 300; (在您的問題中)需要放置在location ~ \\.php$塊中或外部塊之一中才能生效。

對細節nginx上面使用的指令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM