アップグレードシナリオでは、実際にwww.server.com/reading_23.html
を提供するwww.server.com/reading/23
のようなエイリアスURLを提供する必要があります。
.htaccessに次の行を追加して、この作業を行うために何時間も費やしました。
RewriteRule reading_(.*).html reading/$1
その行をRewriteBase /
の直後の標準D8 .htaccessに入れました。残念ながら、私の試みはどれもうまくいきませんでした。 /reading
は、私のmodules.routing.yml
から提供されたパスです。
編集、18.1これは、Drupalにとって非常に特別なようです。これは、既存のD8リダイレクトでは機能しないためです。リダイレクト([L,R]
)のみを実行できますが、私のエンドユーザーはブラウザでreading/23
パスを確認できます。実際の問題は、Drupalでreading_23.html
のようなURLを作成する方法です。ルーティングパラメータは、パスの個別の部分としてのみ有効です( reading/{number}
は問題ありませんが、reading_{number}.html
は不良です)。
これを行う方法を知っている人は誰ですか?
DrupalすべてのノードIDのDBにエイリアスを作成したくありません。
[EDIT Nr 2. 2017年1月18日]
ソリューションは、4k4が書いたようなインバウンドパスプロセッサです。どうもありがとう。
[編集を終了]
あなたの書き換えはdrupal標準.htaccessの他の書き換えと衝突します。リダイレクトを試してください。リダイレクトはすぐに実行され、残りの.htaccessは処理されなくなります。また、URLが変更されたことを検索エンジンに伝えます。
RewriteRule reading_(.*).html reading/$1 [L,R=301]
このコードを.htaccessの問題に書き換えます。コードは、reading_
と.html
の間の任意の文字列に対して機能します
RewriteEngine On
RewriteRule ^reading_(.*)\.html$ http://www.server.com/reading/$1 [L,R=301]
うまくいけば、これでうまくいきます。