3

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

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);
   }
}

何か案は?

/トバイアス

4

4 に答える 4

5

Apacheを介してサービスを提供している場合は、を確認することをお勧めしますmod_rewrite

を使用してmod_rewrite、URLをアプリケーションの実際のエンドポイントにマッピングする方法を変更できます。あなたの例では、次のようなものが必要になります。

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

このページには他にもいくつかの簡単な例があります。

于 2009-08-26T22:02:51.120 に答える
3

おそらく、拡張子が.phpのファイルに対するすべてのリクエストをphpが処理できるようにWebサーバーを構成しました。それがアパッチだとしましょう。それからのようなものがあります

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

また

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

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

ForceType application/x-httpd-php

そして、apacheはすべてのファイルをphpスクリプトとして扱います。ForceTypeは、以前のハンドラー設定をオーバーライドします。

于 2009-08-26T22:18:24.880 に答える
2

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

page.php ファイルがルート ディレクトリ (つまり /page.php) に含まれている場合は、これを .htaccess に追加するだけです。

RewriteEngine On
RewriteBase /

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

ただし、page.php ファイルに /a_folder/another_folder/page.php が含まれている場合

次に、これを .htaccess に入れる必要があります。

RewriteEngine On
RewriteBase /

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

等々。

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

代わりに: http://mydomain.com/page.php/foo/123/bar/456 を使用できます: htp://mydomain.com/foo/123/bar/456

楽しむ。

于 2009-08-26T22:26:09.420 に答える
0

すべての回答に感謝しますが、mod_rewrite を使用すると、新しいページを作成するたびに新しいルール (および多くのルール) を作成する必要があります。そして、それらはたくさんあります:)

おそらく、すべての URL を .htaccess で index.php にリダイレクトしてから、wordpress のようにそこで URL を修正すると:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
于 2009-08-26T23:17:10.813 に答える