0

ファイル名の代わりにフォルダ名を表示するにはどうすればよいですか?

たとえば、www.example.com/home/index.php -> www.example.com/home

www.example.com/home をブラウズすると結果が得られることはわかっていますが、フォルダー名の後ろに / が追加されるため、それは私が望むものではありません (例: www.example.com/home/)。

私が欲しいのは、フォルダの後ろに / がなく、ユーザーが www.example.com/home/index.php を閲覧すると、ページが見つからないページにユーザーをリダイレクトすることです。これを行う目的は、使用した言語を非表示にして、リンクを読みやすく覚えやすくすることです。

.htaccess ファイルのルールを書き換えるようなものを見つけましたが、私は php が初めてなので、作成方法がわかりません。誰でも私に提案をしたり、これに関するチュートリアルを提供したりできます。

ありがとう。

4

2 に答える 2

2

スラッシュを削除するには、まず無効にする必要がありますDirectorySlash

DirectorySlash Off
DirectoryIndex disabled

R=404PHP ファイルへの直接アクセスは、ステータス コードで応答できます。

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule \.php$ - [R=404,L]

次に、ディレクトリを指し、ファイルを含むリクエストを書き換えることができます。index.php

RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^.*$ /$0/index.php [L]

これRewriteCondは、要求された URL がディレクトリであり、このディレクトリに がある場合に見えますindex.php。この場合、index.phpが実行されます。

すべてをまとめる

DirectorySlash Off
DirectoryIndex disabled

RewriteEngine on

# prevent direct access to PHP files
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule \.php$ - [R=404,L]

# rewrite requests for a directory to index.php
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^.*$ /$0/index.php [L]
于 2013-04-19T11:59:18.573 に答える
0

Htaccess doesn't have anything common with PHP. Htaccess is Apache's configuration file, so you need to play with htaccess to achieve that what you want. On the other hand your solution will be really dirty. Learn about MVC and FrontController to make your structure cleaner.

于 2013-04-19T12:00:27.500 に答える