次のような書き換えルールがあります。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (?!^(cms|images|js|mobile)(/.*|)$)^.*$ page.php [NC,L]
これは期待どおりに機能します。ファイルが存在しない場合は、一般的なページであり、カスタムURLのページを許可するpage.phpに転送します。
また、wwwを強制したいと思います。ドメインの前に:example.com-> www.example.com
そのために、私たちは以下を使用します:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
これも機能しますが、2つが一緒に機能することになっている場合:
example.com/non-existent-file
最終的に次のようになります。
www.example.bom/page.php
これはデフォルトで404ページになります。これらのルールを変更して連携させるにはどうすればよいですか?いくつかの異なる十分な文字で遊んでみました(つまり、両方のルールを処理するために[NC、L]のLを削除しました)。
また、wwwリダイレクトの下にあるpage.phpへの転送を繰り返して(そしてLサフィックスを削除して)成功しませんでした。
HTACCESSファイル全体は次のようになります。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (?!^(cms|images|js|mobile)(/.*|)$)^.*$ page.php [NC,L]
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=302,L]
また、現在のドメインを表すexample.comの代わりに使用できる%{CONSTANT}はありますか?