1

通常、私のWebサイトにアクセスすると、URLに表示される部分がなくても、ページが透過的にqpcftw.cu.cc読み込まれます。.htaccess を使用して拡張子を取り除こうとしています。これは私の .htaccess ファイルの内容です:qpcftw.cu.cc/index.php/index.php.php

<Files />
ForceType application/x-httpd-php
</Files>

RewriteEngine on
RewriteBase /

RewriteRule ^.htaccess$ - [F]

RewriteRule ^([A-z,0-9,_,-]+)?$              $1.php     [QSA]
RewriteRule ^([A-z,0-9,_,-]+)/index\.html$    $1.php     [QSA]

ErrorDocument 403 php/error.php
ErrorDocument 404 /404.php
ErrorDocument 405 php/error.php
ErrorDocument 408 php/error.php
ErrorDocument 500 php/error.php
ErrorDocument 502 php/error.php
ErrorDocument 504 php/error.php

3 つの基準を満たす必要があります。

  1. qpcftw.cu.cc/index.php==qpcftw.cu.cc/index
  2. アクセスすると、 PHPBBqpcftw.cu.cc/forum/フォーラムがロードされます。qpcftw.cu.cc/forum/index.php
  3. qpcftw.cu.ccindex.phpURL に表示されることなく、透過的にファイルをロードします。

これまでのところ、私の現在の .htaccess は最初の 2 つのニーズを満たしていますが、3 つ目は壊れています。ヘルプ!:/

4

2 に答える 2

1

すべてにやみくもに .php を追加するのではなく、最初に .php ファイルが存在するかどうかを確認します

RewriteCond $1.php -f 
RewriteRule ^([A-z0-9_-]+)?$              $1.php     [L,QSA]

RewriteCond $1.php -f
RewriteRule ^([A-z0-9_-]+)/index\.html$    $1.php     [L,QSA]

これは 1 と 2 で引き続き機能し、3 も機能するようになりました。これは、コードが index.php.php が存在するかどうか (要求は index.php に対するもの) をテストするためです (要求は index.php に対するものです)。不合格。

また、正規表現クラスからコンマを削除し (コンマを複数のグループを示すために使用することはできません。URL でコンマを使用できることを意味するだけです)、ルールに [L]ast フラグを追加してパフォーマンスを向上させました。

于 2013-05-12T21:48:55.943 に答える