web-dev-qa-db-ja.com

アドレスバーから.phpを非表示にする方法

Phpを使用してWebアプリケーションを構築していますが、ブラウザーのアドレスバーに.php拡張子のないWebページが必要です。たとえばhttp://www.example.com/index.phphttp://www.example.com/indexブラウザのアドレスバー。

これどうやってするの?

9
World

これをWWWルートの.htaccessという名前のファイルに入れます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ $1.php

これは、Apacheを実行していて、mod_rewriteがアクティブになっている場合に機能します。

12

wamp/www /に.htaccessファイルを作成し、このコードをコピーして貼り付けます。

Options +FollowSymlinks


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.+)$ /$1.php [L,QSA]

望む!これは誰かに役立つでしょう!

5
Purushottam

Webサーバーに適した rl-rewriting の方法を見つける必要があります。それはあなたがマップすることができます

www.domain.com/page

www.domain.com/page.php

3
Dutchie432
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]
3
Ikhwanul Fikri

Apache Webサーバーを使用するシステムでは、mod_rewriteを使用します。

新しいバージョンのIISでは、そのバージョンのmod_rewriteを使用できます。古いバージョンでは、プラグインを購入する必要があります。

Stack Overflowの記事

Stack Overflowを検索すると、すでに尋ねられた質問に対する回答が見つかるはずです。

1
SeraM

IISの古いバージョン(たとえばIIS6)で、32ビットプロセスを使用していると仮定すると、IONICS ISAPIRewriteは素晴らしい無料のURL書き換えモジュールであることを指摘しておきます。 IIS 6の64ビットの内部では、商用製品のHelicon ISAPI Rewrite3が優れたツールであることがわかりました。ただし、32ビットの場合、IONICSは無料で、必要なすべてを実行します。

http://iirf.codeplex.com/

1
REA_ANDREW

PHPではURLアドレスを短くする を参照してください。

1
kempsam

Apache2.confで私は持っています

<Files data>    
 ForceType application/x-httpd-php    
</Files>

つまり、dataはPHPファイル拡張子なし

1
pavium
little modification - better to use REQUEST_URI and check for the directory


# Turn mod_rewrite on

RewriteEngine on

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]

# To externally redirect /dir/foo.html to /dir/foo/
RewriteCond %{REQUEST_URI} ^(.+)\.html?$ [NC]
RewriteRule ^ %1 [R,L]

# To internally redirect /dir/foo/ to /dir/foo.html
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]
1
hcktheroot

それを行うにはいくつかの方法があります。

Mod-rewriteを使用してfooをfoo.phpに再配線し、/ barのリクエストが/bar.phpによって処理されるようにすることができます。

ディレクトリとdefault-filesを使用して、/ foo /index.phpによって処理されるディレクトリ/ foo /にリンクすることができます。

Php-scriptを404エラーのハンドラーとして設定すると、存在しないファイルにリンクするだけで、ハンドラーファイルが好きなように処理します。 (通常、urlからphp-fileへのある種のマップを使用することによって)

特定のウェブサーバーに対するすべてのリクエストはphpによって処理されることをウェブサーバーに伝えることができます。

最初または2番目のソリューションが最も単純ですが、最後の2つのソリューションが最高の柔軟性を提供し、そのバリアントは、ほとんどのより大きなフレームワークが行うことです。

1
Agrajag

これが 初心者向けチュートリアル URL書き換え用です。

1
mcgrailm
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
0