0

さて、以前の質問を解決することができましたが、今はある種の障害に陥っています。私のウェブサイトは多くの異なるページにコンテンツを掲載することを計画しており、すべての .php ファイルに domain.com/filename/ を表示する方法があるかどうか疑問に思っていました。filename.php ではなくサブディレクトリを表示しています。

以下では、test.php が domain.com/test/ として表示されるようにしていますが、このようにするには、サブディレクトリとして表示するすべてのファイルの .htaccess を編集する必要があります。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^test/?$ test.php [L,NC]

ああ、サブディレクトリ内にコンテンツはありません(サーバー上にフォルダーとして存在する場合でも.

4

3 に答える 3

1

RewriteCond を使用しない再帰的な試行:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteRule (.*\.php)$ $1 [L]
RewriteRule (.*) $1.php
于 2012-05-09T08:47:43.510 に答える
0

このコードを使用して、.php 拡張子を非表示にすることができます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L]

# To internally redirect /dir/foo/ to /dir/foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
于 2012-05-09T08:36:14.307 に答える
0

PHP でのオブジェクト指向プログラミングについてある程度の知識があることを前提としています。このような URL を実現するには、ディスパッチ パターンが必要です。この場合に最も理想的なのは、フロント コントローラーです。

クラス コントローラの例を次に示します。

class ControllerIndex {
    public $urlmap = array(
        'welcome' => 'WelcomePage'
        );
}

フロント コントローラーでは、すべての要求がグローバル マッピング メカニズムを通過し、ハンドラーに委任されます。ハンドラーは、ファイルではなくクラスの形式になります。

フロント コントローラーは、より意味のある/きれいな URL を提供します。http://domain.com/welcome.phpの代わりにhttp://domain.com/welcome/のようなものがあります

于 2012-05-09T08:41:21.223 に答える