2016-03-29 5 views
1

私はroot example.com/ WebsiteにWordPressをインストールしています。NginxはSEOに優しいURL構造のルールを書き換えます - WordPressと他のWebアプリケーション

またexample.com/my-app/file.php?arg=valueのような醜いリンクにアクセスしているexample.com/my-app/の別のWebアプリケーションがあります。

は、どのように私はそれが私のワードプレスに私をリダイレクトexample.com/my-app/value/するアクセスした場合、私のアプリのSEOフレンドリーなURI構造は、現在?:

example.com/my-app/file.php?arg=value 
to 
example.com/my-app/value/ 

下記の例として活躍することができます/ value /のいくつかの文字を含むpost。どうして?これを稼働させる方法はありますか?ドメインの

私の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はどうでしょうか?すべての実例?

ありがとうございました!

答えて

2

WordPressとmy-appの両方が、共通のドキュメントルート内で作業するため、作業が簡単です。

try_files指示の最後の要素は、(たとえば)SEOフレンドリなURLのデフォルトアクションです。上記の場合

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に設定されている:

は、次の例のように、 location /my-appブロックを使用して達成され、 /my-appで始まるURIの異なるデフォルトのハンドラを必要とします。 (あなたの質問で) fastcgi_read_timeout 300;location ~ \.php$ブロックに配置する必要があることを

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; 
    ... 
} 

注意、または中:あなたは本当にURIの最後の部分を抽出する必要がある場合は、例えば、書き換えと名付け場所を追加効果的であるためには、外側のブロックの1つ。

上記のnginxディレクティブの詳細については、thisを参照してください。

+0

偉大なスタッフマン<4 –

関連する問題