あるファイル接尾辞タイプを別のファイル接尾辞タイプにエイリアスするための mod_rewrite

StackOverflow https://stackoverflow.com/questions/8832

  •  08-06-2019
  •  | 
  •  

質問

これを十分に明確に説明できれば幸いですが、そうでない場合はお知らせください。明確にするよう努めます。

現在、ColdFusion を使用してサイトを開発しており、サイトが PHP を使用しているように見せるために mod_rewrite ルールを導入しています。Index.php に対するリクエストはすべて、index.cfm によって処理されます (ルールは *.php を *.cfm にマップします)。

これはうまく機能します。これまでのところ、非常に良好です。問題は、index.cfm (または任意の ColdFusion ページ) が直接リクエストされた場合に 404 ステータス コードを返したいことです。

mod_rewrite を使用して *.cfm ファイルへのアクセスをブロックしようとすると、*.php へのリクエストに対して 404 も返されます。

.htaccess を使用するのではなく、Apache の設定を変更する必要があるかもしれないと思います

役に立ちましたか?

解決

使用できます S スキップするためのフラグ 404 次のようなルール:

RewriteEngine on

# Do not separate these two rules so long as the first has S=1
RewriteRule (.*)\.php$ $1.cfm [S=1]
RewriteRule \.cfm$ - [R=404]

も使用している場合は、 Alias オプションの場合は、次のオプションも追加する必要があります PT フラグ。を参照してください。 mod_rewrite ドキュメント 詳細については。

他のヒント

開始点としてすでにあるルールを投稿すると、他の人があなたを助けるためにルールを再作成する必要がなくなります。

最初に試すこととして、.php を .cfm ファイルにマップするルールで [L] をテストすることをお勧めします。

書き換えルールの 2 つの異なるグループ (1 つは .php 用、もう 1 つは .chm 用) を使用し、RewriteCond %{REQUEST_FILENAME} と相互に排他的にする必要があります。jj33 が提案したように、フラグ [L] を使用してください。

ルールは .htaccess に保存できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top