0

こんにちは、これがどこかにある場合はお詫びしますが、私の設定で機能する答えが見つかりません。

URLからファイル名を削除して。にwww.example.co.uk/products/products.phpなるWebサイトがありますwww.example.co.uk/products/。ホームページから/index.phpを削除するためにフォローしてきましたが、フォルダー内のファイルで機能させることができません。

ホームページのURLからindex.phpを削除する作業コードは次のとおりです。他のページからproducts.phpなどを削除するように変更するにはどうすればよいですか?

RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/
RewriteRule ^(([^/]+/)*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,L]

助けていただければ幸いです

4

1 に答える 1

0

このルールは、PHP ファイルを指すすべての URL に適用され、後者を取り除き、残りへのリダイレクトを発行します。

RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\/[^/]+\.php\ HTTP/
RewriteRule ^(.*)/[^/]+\.php$ http://%{HTTP_HOST}/$1 [R=301,L]

編集
@Ashley Briscoe:ここで少し混乱していると思います。クライアントが要求している最初の URL がhttp://www.example.com/products/products.php. これは上記の規則により に書き換えられhttp://www.example.com/products/ます。

現在、書き換えられた URL はファイル リソースではなくディレクトリ (末尾のスラッシュがそれを示します) を指しているため、mod_dirが使用されている場合 (たとえば、index.html または index.php)、Apache はディレクトリ インデックス ファイル(たとえば、index.html または index.php)を提供しようとしています (であると安全に想定できます)。

ここ403 Forbiddenで得られる応答は、Web サーバーを実行しているユーザーに、ディレクトリ インデックス ファイルを読み取ったり、ディレクトリ インデックス ファイルを含むフォルダーを開いたりするための十分な権限がないことを示しています。

これを解決するには、ディレクトリ インデックス ファイルが実際に存在すること (したがって、製品ディレクトリ内に名前products.phpを変更することindex.php) と、Web サーバーにそのファイルを読み取る権限があることを確認する必要があります。

EDIT 2
最後のコメントについて: 名前の変更がオプションでない場合は、代わりに提供するファイルを Apache に知らせる必要があります。したがって、次のように別のルールを追加します。

RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\/[^/]+\.php\ HTTP/
RewriteRule ^(.*)/[^/]+\.php$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^products/?$ /products/products.php [L]
于 2012-04-15T10:13:19.907 に答える