2017-06-22 13 views
0

に私が.htaccessを次ていません。のRewriteCondはテストで満たされていたが実際

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [C] 

RewriteCond %{REQUEST_FILENAME} ^(.*).php$ 
RewriteRule ^(.*)$ /index.php [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

私はそれが最初にHTTPSにすべてを再ルーティングします。

次に、ユーザーがdomain.com/pages/page/a.phpなどのPHPファイルにアクセスしていて、/index.phpにルーティングしているかどうかを確認します。

はその後、最後に私はそれhtaccess tester上でテストを実行すると、最初と最後のブロックは正しいが、いくつかの理由であると考え、このようなdomain.com/my-fun-page

としてindex.phpへのルートにないファイルやディレクトリのthatsすべてをしたいです正常に動作します。しかし、自分のサーバー上で実行すると、まだdomain.com/pages/page/a.phpにアクセスできます。

どうすればよいのでしょうか、何が間違っていますか?

答えて

0

あなたはこのような単一のルールにあなたの第二第三のルールを組み合わせることができ、PHPの一部については、以下で

RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule^/index.php [NC,L,QSA] 
0

をお試しください:

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,LE] 

RewriteCond %{REQUEST_FILENAME}\.php -f [OR] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

でもRewriteCond %{REQUEST_FILENAME}\.php -f [OR]!-f!-dとして必要ではないかもしれませんすでにこのケースをカバーします。

関連する問題