1

.htaccess に次のロジックがあります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule notes/(.*?) notes/?u=/$1
</IfModule>

ただし、何らかの理由で、これにより常にクエリ文字列が出力から削除されます。したがって、これはたとえば、私がgitした結果です:

http://localhost:8888/notes/tifffilmtips   >   http://localhost/notes/

ただし、 RewriteRule を に変更すると、 の前RewriteRule notes/(.*?) notes/u=/$1を除いて、結果は次のようになります。?u=

http://localhost:8888/notes/tifffilmtips   >   http://localhost/notes/u=/tifffilmtips

そのため、何らかの理由で、生成されたクエリ文字列が出力で常に破棄されます。これはなぜでしょうか?さまざまなフラグを試しましたが、期待どおりに機能するフラグが見つかりません。同様の問題を抱えている他の人への参照も見つかりません。


編集:

最初の部分が機能している完全な htaccess は次のとおりです。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteBase /magazine/wordpress/
RewriteRule ^notes/(.*)$ notes/?u=/$1 [QSA,NC,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /magazine/wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /magazine/wordpress/index.php [L]
</IfModule>

# END WordPress
4

2 に答える 2

1

ワードプレスのパーマリンクとしてルーティングされている場合/notes/、パーマリンクをオンにするとワードプレスは通常クエリ文字列を削除するため、これは少し面倒です。wordpress がこれを行う理由、その方法、回避方法について説明しているこの投稿をご覧ください。wordpress のパーマリンクは、wordpress の内部にある書き換えのレイヤーを追加し、それが発生するとクエリ文字列パラメーターが吹き飛ばされます。functions.phpしたがって、修正には、具体的にはテーマのスクリプトにいくつかの php コードを追加する必要があります。何かのようなもの:

function add_query_vars($aVars) {
  $aVars[] = "u"; 
  return $aVars;
}

// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');

それから:

function add_rewrite_rules($aRules) {
  $aNewRules = array('notes/([^/]+)/?$' => 'index.php?pagename=notes&u=$matches[1]');
  $aRules = $aNewRules + $aRules;
  return $aRules;
}

// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');
于 2013-09-19T11:30:11.213 に答える
1

RewriteRule を次のように変更します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /magazine/wordpress/

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^notes/(.*)$ notes/?u=/$1 [NC,L]    

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /magazine/wordpress/index.php [L]

</IfModule>
于 2013-09-19T09:57:40.750 に答える