2009-08-26 20 views
3

ここでいくつかの助けを使うことができます。これを使用してURLを修正していますが、.php拡張子を削除する方法がわかりません。 http://mydomain.com/page.php/foo/123/bar/456PHPで拡張子.phpを削除します

function decode_URL_parameters() { 
    $path = @$_SERVER['PATH_INFO']; 
    $url_array=explode('/',$path); 

    array_shift($url_array); 

    while ($url_array) { 
     $_GET[$url_array[0]] = $url_array[1]; 
     array_shift($url_array); 
     array_shift($url_array); 
    } 
} 

任意のアイデア:URLは次のようになりますか?

/トビアス

+0

をあなたは何を作成しようとしている:そしてそれらの多く:)おそらく

私はhtaccessファイルと私のindex.phpへのすべてのURLをリダイレクトして、ワードプレスのように、そこに私のURLを修正する場合があります「Pretty URL」として知られています。以前はSOで議論されていました。 [この回答](http://stackoverflow.com/questions/128796/pretty-urls-for-search-pages/128882#128882)あなたが探しているものを持っている必要があります。 – s4y

+0

これはPHPだけではできません。Apacheモジュールmod_rewriteを調べる必要があります。 –

答えて

5

あなたは、Apache経由で提供している場合は、mod_rewrite見たいと思うでしょう。

mod_rewriteを使用すると、アプリケーションの実際のエンドポイントにURLをマッピングする方法を変更できます。あなたの例では、このような何かをしたいでしょう:

RewriteEngine on 
RewriteRule ^/?page/(.*)$ page.php/$1 [L] 

This pageは、他のいくつかの簡単な例があります。

3

phpが拡張子が.phpのファイルに対するすべての要求を処理できるようにWebサーバーを設定したのではないでしょうか。それがapacheだとしましょう。次に、構成ファイルの1つで

AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt 

または

<FilesMatch \.php$> 
    SetHandler application/x-httpd-php 
</FilesMatch> 

のようなものがあります。 2つ目は、マスク.php $と一致するすべてのファイルが、application/x-httpd-php(php)タイプ用に登録されたモジュール/ハンドラによって処理されるべきであることをApacheに伝えます。
しかし、.phpファイルに制限する必要はありません。必要な任意のファイルマスクを使用できます。あるいは、例えば、 <Directory>。 (多分およびそのサブディレクトリ)すべての特定のディレクトリ内のファイルは、PHPスクリプトがある
場合でも

ForceType application/x-httpd-php 

とそのディレクトリに.htaccessファイルを置くことができますし、ApacheがPHPスクリプトとして任意のファイルを扱います。 ForceTypeは、以前のハンドラ設定を上書きします。

2

Apacheでは、.htaccessファイルをpage.phpファイルを含むディレクトリに配置します。

page.phpファイルがルートディレクトリ(つまり/page.php)に含まれている場合は、単にあなたの.htaccessファイルに以下を追加:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /page.php?/$1 [L] 

しかし、page.phpファイルができますに含まれている場合その上

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /a_folder/another_folder/page.php?/$1 [L] 

そして:そして、あなたはあなたの.htaccessにこれを配置する必要があります

/a_folder/another_folder/page.php言います。

これは何ですか、単にURLからpage.phpを削除します。だからあなたの場合:

の代わりに:http://mydomain.com/page.php/foo/123/bar/456 はあなたが使用することができます:HTP://mydomain.com/foo/123/bar/456

楽しん。

0

すべての回答ありがとうございます。ただし、mod_rewriteを使用すると、新しいルールを作成するたびに新しいページを作成するようになりました。

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 
関連する問題