2011-12-27 4 views
1

webrootフォルダの.htaccessに次の書き換えルールを持つCAKEPHPアプリケーションがあります。CAKEPHPアプリケーションのスタンドアロンPHPスクリプトのURL書き換え

<IfModule mod_rewrite.c> 
RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.com$ [NC] 
RewriteRule ^(.*)$ domain.com/$1 [L,R=301] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

私は前にCakePHPで働いていないし、PHPの初心者です、と私はWebルートフォルダにある「製品」という名前のフォルダを持っているスタンドアロンのPHPスクリプトを書いたことがありません。このフォルダ内の私のインデックスページはidを取り込み、DBから製品名と説明を取得します。

だから(製品の何百もあります): www.domain:www.domain.com/products/index.php?id=1

私はURLでのようになります。ルールを含めたいです.com/products/the-flux-capacitor

私はCakePHPの書き換えを破棄することなくこれをどのように達成できるのか教えてもらえますか?

+0

のための書き換えを行いますcakephpアプリケーションのそのコード?なぜWebrootにPHPファイルが必要ですか? – pleasedontbelong

+0

返事をありがとう。私は前にCakeを使用したことがないので試していないし、すべてが狂った場合にコードに触れてしまう危険がありません。 – jIMBOBOB

+0

Cakephpの基本を学び、コードを含めると危険が少なくなりますケーキの中のコントローラで:)と私はそれが簡単になると思う。 Cakephpは非常にシンプルです – pleasedontbelong

答えて

0

次のURL構造www.domain.com/products/the-flux-capacitorを使用する場合は、一意でなければならないすべての製品名をIDにマップする方法が必要です。これは大きな努力になります。あなたがわずかに変更されたURLの構造を使用している場合

しかし、www.domain.com/products/the-flux-capacitor/id(でもAmazonはこれを行います)、それははるかに簡単ですし、次の.htaccessのコードは、あなたが書くいけないなぜ

#existing rules... 
RewriteRule ^(.*)$ domain.com/$1 [L,R=301] 

#Insert new rule to match products, assumes ID is numeric 
RewriteRule ^products/[^/]+/([0-9]+) products/index.php?id=$1 [L,QSA,NC] 

#existing rules ... 
RewriteCond %{REQUEST_FILENAME} !-d 
+0

こんにちは、感謝の返事です。私のIDは英数字ですので、RewriteRule^products/[^ /] + /([A-z0-9] +)products/index.php?id = $ 1 [L、QSA、NC]?また、URLで 'the-flux-capacitor'を使用する方法をルールがどのように知っていますか? – jIMBOBOB

+0

英数字で '[a-zA-Z0-9]'を使用している場合。私はあなたのHTMLにすでに 'www.domain.com/products/the-flux-capacitor/id'という形式のリンクがあると仮定しています。このルールは単に 'index.php'にこのリンクをマップし、製品の説明を無視し、idを抽出するだけです。 –