2017-04-19 13 views
2

URLの最後に.phpが追加されるたびにURLを書き直すようにしていますが、コメントアウトした部分を含めるとエラーが発生します。Apache mod-rewrite - hidding PHP

自分自身で動作するように.phpエラーが発生する可能性がありますが、それ以外のすべてのルールではエラーが発生しません。現在のフォームでは、すべてのページエラーが発生します。

他のすべての部分が動作しています。

サイトがセットアップされているのでどんなエラーが1ページに移動 - error.php

Options -Indexes 
    RewriteEngine On 

    ErrorDocument 404 /error.php 
    ErrorDocument 301 /error.php 
    ErrorDocument 400 /error.php 
    ErrorDocument 401 /error.php 
    ErrorDocument 403 /error.php 
    ErrorDocument 404 /error.php 
    ErrorDocument 500 /error.php 


    ###### Send any requests for to error ###### 
    RewriteRule ^index(\.[A-Za-z0-9-]+)/?$ error.php [R=404,NC,L] 

    ###### changing Validate URL ######## 
    RewriteRule ^validate/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/*?$ validate.php?$1=$2&$3=$4 [NC,L] 

    ###### Show 404 error page when any request ends with '.php' 
      RewriteRule ^(.*)\.php(.?.*)$ error.php [R=404,NC,L] 

    #  I also want to allow for anything that contains a get request here. but wanted to get the .php bit working first. 



    ###### To remove the trailing slash ###### 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^([^/]+)/$ $1.php 
    RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
    RewriteRule (.*)$ /$1/ [R=301,L] 

答えて

1

は、このルールを使用して.php to 404ルールを変更します。

###### Show 404 error page when any request ends with '.php' 

RewriteCond %{THE_REQUEST} \.php[?\s/] [NC] 
RewriteRule !^/?error\.php$ /error.php [R=404,L,NC] 
+0

は、定義されたエラーページが見つかったようです。前の例と同じエラーが発生しています。私の 'ErrorDocument 404/error.php'が間違った順序で誤って指定されているのでしょうか? – denski

+0

私はあなたの2番目の提案を含めるとき、私は少し異なる '内部サーバーのエラー'を取得します。 '内部サーバーエラー サーバーで内部エラーまたは構成ミスが発生し、要求を完了できませんでした。 webmaster @ localhostのサーバー管理者に連絡して、このエラーが発生した時刻とこのエラーの直前に実行した操作を通知してください。 このエラーの詳細は、サーバーのエラーログで確認できます。 さらに、ErrorDocumentを使用してリクエストを処理しようとしたときに、500 Internal Server Errorエラーが発生しました。 ' – denski

+0

ありがとうございます。ここで95%です。これは、.phpで終わるものすべてを今すぐエラーにリダイレクトします。唯一の問題は、タイプされたURLを保持することが理想的です。 'ex.com/error /'を表示するのではなく、 'ex.com/test.php'それは可能ですか? – denski

1

ルール以下で試してみてください、

RewriteRule ^(.+)\.php$ error.php [R=404,NC,L] 
+0

ありがとうございます! x.com/testのようなページを訪れたときにこれを取得します。この行をコメントアウトすると、通常の状態に戻ります。 が見つかりません **リクエストされたURL /test.phpがこのサーバーに見つかりませんでした。 さらに、ErrorDocumentを使用してリクエストを処理しようとしたときに、404 Not Foundエラーが発生しました。** – denski