2

example.com/test.php現在、Web サイトを更新していて、すべてのリンクを のような非拡張リンクに変更したいと考えていますexample.com/test。私が見つけたこの解決策は、.htaccessファイルに入れました:

RewriteCond %{THE_REQUEST} ^GET\ /(([^/?]*/)*[^/?]+)\.php

RewriteRule ^.+\.php$ /%1 [L,R=301]

しかし同時に、私の Web サイトの下位レベルにあるリンクのリダイレクトを作成する必要がありexample.com/level/test2.phpますexample.com/test2.php。ファイルを下位レベルから上位レベルにリダイレクトし、同時に .php 拡張子を削除するには、.htaccess に何を記述すればよいですか?

4

1 に答える 1

1

グループ化を分離し、全体ではなく、2 番目のものを後方参照する必要があります。

RewriteCond %{THE_REQUEST} ^GET\ /([^/?]*/)*([^/?]+)\.php
RewriteRule ^.+\.php$ /%2 [L,R=301]

基本的に、/(([^/?]*/)*[^/?]+)\.phpは に変更され([^/?]*/)*([^/?]+)、次にルールのターゲットで に%1変更されます。%2

于 2012-10-12T03:59:45.440 に答える