0

そこで、PHP でクリーンな URL システムを構築して、次のように URL を変更しようとしていますhttp://example.com/index.php?projects=05http://example.com/projects/05

これまでのところ、次のようにparse_url見える URL をマップするために使用する方法を理解しましたhttp://example.com/index.php/projects/05が、URL から「index.php」を削除する方法がわかりません。.htaccess を使用index.phpして URL 文字列から削除する方法はありますか?

これは一種の単純な問題であることは知っていますが、大規模なグーグル検索の後、解決策が見つかりません。

4

4 に答える 4

1

mod_rewrite を使用して、Apache でこれを行う必要があります。すべての URL を index.php にリダイレクトする必要があります。その後、おそらく parse_url を使用して、それらをどうするかを考えます。

例えば:

# Turn on the rewrite engine
RewriteEngine On

# Only redirect if the request is not for index.php
RewriteCond %{REQUEST_URI} !^/index\.php

# and the request is not for an actual file
RewriteCond %{REQUEST_FILENAME} !-f

# or an actual folder
RewriteCond %{REQUEST_FILENAME} !-d

# finally, rewrite (not redirect) to index.php
RewriteRule .* index.php [L]
于 2012-05-25T06:02:45.243 に答える
0

実際のファイル/フォルダをURLから切り離すという概念は、ルーティングと呼ばれます。多くのPHPフレームワークには、主にmod_rewriteを使用して、この種の機能が含まれています。単純なスタンドアロンルータークラスを実装するPHPURLルーティングに関するすばらしいブログ投稿があります。

次のようなマッピングを作成します。

mysite.com/projects/show/1 --> Projects::show(1)

したがって、要求されたURLは、パラメータが。show()のクラスの関数が呼び出される結果になります。Projects1

これを使用して、PHPコードへのきれいなURLの柔軟なマッピングを構築できます。

于 2012-05-25T08:55:00.637 に答える
0

次の .htaccess ファイルを使用して、URL の index.php 部分を削除しています。

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !favicon.ico$

RewriteRule .* index.php/$0 [PT]

それ以外の場合は、参照として Kohana フレームワークをお勧めします (かなり優れた URL パーサーとコントローラー システムも備えています)。

于 2012-05-25T06:01:05.887 に答える
0

あなたの .htaccess のようなもの:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

(書き換えモジュールが有効になっていることを確認してください)

于 2012-05-25T06:01:07.580 に答える