web-dev-qa-db-ja.com

.htaccessを使用して.phpURL拡張子を非表示にするにはどうすればよいですか?

Phpファイルの.htaccessファイル拡張子を非表示にする.phpファイルに何かを入れたいので、www.example.com/dir/somepageにアクセスするとwww.example.com/が表示されます。 dir /somepage.php。

これに対する実用的な解決策はありますか?それが重要な場合、私のサイトはHTTPSを使用しています。

これは現時点での私の.htaccessです:

RewriteEngine On

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

ErrorDocument 404 /error/404.php

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
16
Markum

DOCUMENT_ROOTの下の.htaccessで次のコードを使用します。

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,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
43
anubhava

php拡張子を削除

/.htaccessのコードを使用できます:

RewriteEngine on


RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [NC,L]

上記のコードを使用すると、/ file.phpに/ fileとしてアクセスできるようになります。

html拡張子を削除

RewriteEngine on


RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_FILENAME}.html [NC,L]

注:「RewriteEngineon」ディレクティブは、htaccessごとに上部で1回使用する必要があるため、これら2つのルールを組み合わせる場合は、2番目のルールから行を削除してください。コード上で.phpをそれらに置き換えるだけで、他の任意の拡張子を削除することもできます。

ハッピーhtaccessing!

4
starkeen
<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f       # if the requested URL is not a file that exists
RewriteCond %{REQUEST_FILENAME} !-d       # and it isn't a directory that exists either
RewriteCond %{REQUEST_FILENAME}\.php  -f  # but when you put ".php" on the end it is a file that exists
RewriteRule ^(.+)$ $1\.php [QSA]          # then serve that file (maintaining the query string)

</IfModule>

奇妙なことに、このコードを使用すると、WindowsのXAMPPでHTTP500エラーが発生しました。コメントを削除すると修正されました。コメントを移動して、指示と同じ行ではなく、独自の行に配置しました。

2
TRiG

これを試して:

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]Try:

参照:

。htaccessで.php拡張子を非表示にする方法

0
Wes Crow