2011-12-05 8 views
1

PHPとHTMLが同じファイルにありますが、URLをそのページの名前として表示する方法が正確ではありません。PHPスクリプト内からURLの外観を変更する方法

ここに私がしたいことの例があります:いくつかのページid = 1とそのページのタイトルはHelloWorldです。

代わりのsite.com/page.php?id=1私はsite.com/HelloWorld

として表示されるURLをしたいと思います。しかし、私が午前問題は、私は唯一の私はIDによるタイトルを照会した後、そのページ内でページのタイトルを知ってもらうことです。

私が説明した設定を考慮すると、URLをページの名前として表示する方法はありますか?また、誰かがidの代わりにページの名前を使って見栄えの良いURLを使用してそのページにリンクしている場合でも、IDを取得する方法はありますか、それによってページの残りの部分は取得できますか?

ありがとうございます!

+0

多くのフレームワークやCMSがこれを実現する方法(Drupal、CakePHP、RoR、Symfonyなど)をチェックしたいと思うでしょう。 – webbiedave

+0

さて、あなたはidでpageNameを照会し、URLにpageNameを必要としますか?私はあなたが正しいページを取得しないので、これは単に不可能であると思います。だから(site.com/1/Helloworld'のように)そこにpageIdを追加するか、スクリプトを変更して名前を使ってページを取得してください。 – Sgoettschkes

+0

@Booああ、あなたは正しい道にここにいるかもしれない!あなたが提案したURLでこれをどのように達成するのですか? IDと名前を取得し、スクリプト内から301を実行しますか? – GeekedOut

答えて

1

必要なのは、.htaccessの仕組みの詳細です。ここで

始めた私を得た良いリンクです:

.htaccess tricks and tips

アップデート:ここで

は、すべての要求があるindex.phpに送信され、多くの枠組みの中では非常に一般的である、とからのあなたは正しいページを提供するためにPHPを使います:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://www.site.com/index.php [L,R=301] 
</IfModule> 
+0

ありがとう...私はこれがどうしてもうまくいくかどうかは確信していません。だから私はIDを取得し、リダイレクトするだろうか?私は2つの条件があります:1)私は着信IDを取得し、それによって私は名前をクエリし、次にかなりのURLを作成しようとします。そして、URLがきれいで、それがどのIDに属しているかを動的に把握しなければならない反対の条件。 – GeekedOut

+0

このフォーマットでは、次のように思えるかもしれません:http:// site.com/1/HelloWorld'ここで、1はid、urlは解析してIDを抽出します。 – Ibu

1

これは実際にあなたのHTTPサーバーソフトウェア(多くの場合Apache)の機能ですPHPのot。

「友好的な」URLを持つサイトで見られるのは、フレンドリ名が正規表現でキャプチャされてからPHPに渡されるということです。例えば

GET /HelloWorld 

は、ウェブサーバがPHPスクリプトは、常にパラメータとしてフレンドリ名を受け取ることになります。このようにして

RewriteCond ^(A REGULAR EXPRESSION TO CAPTURE YOUR FRIENDLY NAME)$ 
RewriteRule page.php?id=(EXPRESSION FROM ABOVE) 

解析し...あなたのWebサーバーに送信されます。

Apacheの "mod_write"を見てください。これは、ルートディレクトリで ".htaccess"ファイルを使用するためのルールを作成することがよくあります。

+1

ありがとう、私が持っている難しさは、名前が何であるかを知らないです。彼らはハードコーディングされておらず、ユーザーによってほとんど構成されていません。私の場合、正規表現のやり方がまだ機能していますか? – GeekedOut

+0

正規表現はURLの一部をキャプチャするだけです。たとえば、/ userpages /(.*)/を実行すると、/ userpages/frank /または/ userpages/justin /を取得し、$ _POST ['id'] = 'frank'または$ _POST [' id '] ='ジャスティン '。これで何をするかを選択できます(たとえば、ページがない場合は404を返すなど)。 – funwhilelost

関連する問題