/<module>/<controller>/<action>/ で MVC を使用していますが、example.com/module/whatever にモジュールがあり、example.com/module-a/whatever に「名前を変更」する必要があります。アプリケーション全体が既に作成されているため、コード内のすべての場所を調べて変更することはできません。そのため、mod_rewrite でそれを実行したいと考えています。私は次のことを試しました
RewriteCond %{THE_REQUEST} ^GET\ /module/
RewriteRule ^module/(.*) /module-a/$1 [L,R=301]
これは、example.com/module/whatever のようなすべての URL を example.com/module-a/whatever にリダイレクトする限り、私が望んでいたことを行いましたが、「module-a」でのすべてのリクエストを内部的に「module」として書き換える必要があります。 . また、モジュール ルート (つまり、末尾にスラッシュがない example.com/module) に対しても機能する必要があります。これは可能ですか?追加した
RewriteRule ^module-a/(.*)$ module/$1
上記の条件とルールのすぐ下にありますが、ページにアクセスすると、モジュール 'module-a' が見つからないというメッセージが表示されます。
編集:
それらの下にさらにいくつかのルールがあります。それらがこれに影響を与えるとは思いませんが、とにかくここにあります:
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
解決
結局使ってしまった
RewriteCond %{THE_REQUEST} ^GET\ /module/
RewriteRule ^module$ /module-a [L,R=301]
RewriteRule ^module/(.*) /module-a/$1 [L,R=301]
すべてのリンクを module から module-a にリダイレクトします。URL example.com/module.
内部的に書き直すと、元のルールが正常に機能しますが、Zend はそれをオーバーライドするようなことを行うようで、ルートで処理する必要がありました。ルートを使用して zend モジュールの名前を変更するを参照してください