2012-04-07 12 views
0

誰かが私を助けてくれることを望んでいました。私はCRMアプリケーションを構築しており、.htaccessファイルを変更してURLをクリーンアップする必要があります。私は.htaccessとmod_rewriteに関するすべての記事を読んできました。私はhttp://www.generateit.net/mod-rewrite/を使っても、成功しなかった結果を得ようとしました。ここに私がやろうとしていることがあります。.htaccess mod_rewrite URLクエリ

  • はのは、我々は、MySQLバックエンドといくつかのjQueryを使ってPHPを使用していて、その「ルート」フォルダ内のJavaScript
  • が私の.htaccessファイルである
  • www.domain.comベースURLを呼ぶことにしましょう。各サブディレクトリに.htaccessファイルが必要かどうか、またはルートに十分なファイルがあるかどうかはわかりません。
  • "crm"、 "sales"、 "finance"などのファイルの実際のディレクトリがいくつかあります。
  • まず、私が自分自身でできる「.php」拡張子を取り除きたいこれらの投稿に。しかし、会社と連絡先のIDのクエリは、私が立ち往生している場所です。
  • 現在、www.domain.com/crm/companies.phpを読み込むと、すべての会社がリストに表示されます。
  • 私は会社のID(x)に基づいてフォームを書いてフォームを送信する "goto_company(x)" jQueryスクリプトを呼び出すためにjavascriptを使用しています。これはうまく動作し、エンドユーザーが見るのはすべてwww.domain.com/crm/company.phpであるため、リンクをきれいに保ちます。しかし、会社に直接ナビゲートすることはできません。
  • PHPでいくつかの行を追加してPOSTがnullであるかどうかを確認し、代わりにGETを試してwww.domain.com/crm/company.php?companyID=40を実行して、データベース。
  • 私はこのリンクとwww.domain.com/crm/company/40への他の関連リンクをすべて書き直す必要があります
  • 私はすべてを試しましたが、何も動作していないようです。私は "連絡先"のためにこれを行う必要があることを覚えておいてください。また、アプリケーションの販売部分では、 "取引"のために何かをする必要があります。ここで要約する

は私がやって探しています何:

  • 変更WWWをwww.domain.com/crm/dashする

    1. 変更www.domain.com/crm/dash.php。 domain.com/crm/company.php?companyID=40〜www.domain.com/crm/company/40
    2. www.domain.com/crm/contact.php?contactID=27をwww.domain.comに変更してください/ crm/contact/27
    3. www.domain.com/sales/dash.phpからwww.domain.com/sales/dashに変更
    4. 変更www.domain.com/sales/deal.php?dealID=6

    (40、27、及び6は、例としてだけで任意の数である)www.domain.com/sales/deal/6します

    参考として、www.domain.com/crm/company.php?companyID=40を使用してgenerateit.net/mod-rewriteサイトを使用した場合の例を次に示します。 .htaccessファイル:

    Options +FollowSymLinks 
    RewriteEngine On 
    RewriteRule ^crm/company/([^/]*)$ /crm/company.php?companyID=$1 [L] 
    

    言うまでもなく、動作しませんでした。

    ここでOKを助けに基づいて更新されては、それは私が把握することができないよう、小さなバグを除いて取り組んでいる

    の下Gohn67から受け取りました。私は "crm"ディレクトリに.htaccessファイルを作成しました。ここでは、コードは次のようになります。

    RewriteEngine On 
    RewriteRule ^test/([\d]+)$ /crm/company.php?companyID=$1 [L] 
    

    それは私が必要なものに非常に近いですので、これはwww.domain.com/crm/company.php?companyID=40にwww.domain.com/test/40書き換えます。

    RewriteRuleで "test"を "company"という単語に置き換えることができないというバグがあります。何故かはわからない。私はそこに「会社」という言葉だけを置くことができます。 "contact"や "add-contact"のような "crm"ディレクトリ内の他のPHPファイルの名前さえも含みます。さらにテストとして、私は実際にtest.phpをするcompany.phpと改名し、へのRewriteRuleを変更:働い

    RewriteRule ^company/([\d]+)$ /crm/test.php?companyID=$1 [L] 
    

  • +0

    :それはまた、上からAAミスを修正します'? –

    +0

    私は上記のように "/"を追加しようとしましたが、1)何も変わらない、2) "/"が暗示されているので削除する必要があると述べた投稿を読みました。私はそれがこの.htaccessビジネスになると、超初心者だからどちらの方法が正しいか、どちらが間違っているのか分かりません。私が知っていることはどちらも方法ではない! – 1001001

    答えて

    1

    ええ、生成されたリライトはちょっと変わっています。私はそれがここに一致しようとしているのか分からない([^/]*)

    これはあなたの役に立つ例です。私は私のシステムでこれらをテストしました。

    RewriteEngine On 
    RewriteRule ^crm/dash/?$ /crm/dash.php [L] 
    RewriteRule ^crm/company/([\d]+)/?$ /crm/company.php?companyID=$1 [L] 
    RewriteRule ^crm/contact/([\d]+)/?$ /crm/contact.php?contactID=$1 [L] 
    

    これは例としてあなたのルートのほんの一部です。私は、この方法で多くの書き換えルールが導き出されるため、より堅牢にすることができると認めます。そのうちいくつかはより良い正規表現パターンで逃れることができます。しかし、うまくいけば、これはあなたを始めます。

    ここでは、サブディレクトリを考慮して更新された書き換えルールがいくつかあります。あなたは `^/CRM /企業/([^ /] *)$と`^CRM /企業/([^ /] *)$ `を置き換えるとどう

    RewriteEngine On 
    RewriteBase /crm 
    RewriteRule ^dash/?$ dash.php [L] 
    RewriteRule ^company/([\d]+)/?$ company.php?companyID=$1 [L] 
    RewriteRule ^contact/([\d]+)/?$ contact.php?contactID=$1 [L] 
    
    +0

    あなたはどんな問題に取り組んでいますか? – Gohn67

    +0

    ありがとうございました。上記のあなたの例が働いたが、私は1つのことを微調整した。私は "crm"ディレクトリに.htaccessファイルを作成し、ルールから "crm /"接頭辞を削除しました。 'code' RewriteRule^company /([\ d] +)(/)$/crm/company.php?companyID = $ 1 [L] 'code' 本質的にhttp://www.domain.com/crm/yeah/40/をリクエストすると、私はhttp://www.domain.com/crmに正しくリダイレ​​クトされます/company.php?companyID=40。 私はまた、要求しているURIとして "company"を使用することはできません。理由は分かりませんが、テストとして「こんにちは」に変更しなければなりませんでした。 – 1001001

    +0

    ええと、crmディレクトリにhtacessを置くと、RewriteBaseディレクトリを追加する必要があるので、 'RewriteEngine On'の後に' RewriteBase/crm'を追加すると思います。私は今それをテストするつもりですが、それはそれを行う一般的な方法です。 – Gohn67