0

重複の可能性:
.htaccessを使用して.php拡張子を削除します

私は.htaccessについてほとんど知りません、私が達成しようとしていることは2つあります。

  1. .phpへのリクエストが、.phpの有無にかかわらず、末尾のスラッシュの有無にかかわらず呼び出されることを許可します。例えば。

    /profile.php 動作
    /profile は.phpを追加し、動作は.phpを
    /profile/ 追加するので動作します

  2. 上記を試してもファイルまたはディレクトリが存在しない場合は、404として扱い、別のページにリダイレクトしてください。

    /something 失敗、/404.php?id=$1にリダイレクト(URLが要求されました)

別々に機能する2つのルールがありますが、これらまたは何かを条件付けする必要があります。何かアドバイスをいただければ幸いです。

RewriteEngineをオンにします

#これはPHP部分で機能します。
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule ^([^ /] *)/?$ $ 1.php

#これは一般的な404処理で機能します
RewriteBase /
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule ^(。*)$ /404.php?url=http://%{HTTP_HOST}/$1 [L]
4

1 に答える 1

1

Apache は、.php を mod_rewrite に自動的に追加し/profile/profile/mod_rewrite なしで追加します。処理する必要があるのは 404 ページだけです。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /404.php?url=http://%{HTTP_HOST}/$1 [L]

ただし、何らかの理由で機能しない場合 (たとえば、Apache が適切に構成されていないなど):

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /404.php?url=http://%{HTTP_HOST}/$1 [L]
于 2013-01-23T15:32:58.593 に答える