2012-03-27 9 views
1

これで2つのRewriteRulesが必要なサイトがあります。あなたがnewvendor.business.comに行けばhtaccessファイルには2つのRewriteRulesが必要です

最初に、私はそれがnewvendor.businessにnewvendor.business.com/pendingから行く必要が

セカンドをnewvendor.business.com/newform.phpに行きます。 com/pending/index.phpをクリックします。最初のルールでは動作しますが、保留中のhtaccessファイルはありません。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z_]+)/?([a-zA-Z_+]+)?/?([0-9]+)?/? $1.php?action=$2&id=$3 [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-p 
RewriteRule ^pending/([0-9]*)$ /pending/index.php?id=$1 

これはできますか?もしそうなら、誰かが私にそれを手伝うことができますか?

答えて

3

1. newform.phpに関するビット:

1.a. DirectoryIndex

DirectoryIndex newform.php index.php index.html 

長所:

  • URIが実際に "/newform.php" "/" のままで、ではありません。

短所:

  • たぶん、あなたは、ユーザーが「/newform.php」
  • はサブフォルダ内のどこnewform.php持つ用心見たいん - のDirectoryIndexの設定が継承され、あなたが終わるかもしれません予期せぬ結果(これはかなり遠いフェッチされたシナリオですが)。

1.b。 RedirectMatch

RedirectMatch ^/$ /newform.php 

長所:

  • 精密 - のみ、この特定のURIがリダイレクトされている(サブフォルダは影響を受けません)。

短所:私は一瞬

1.C.であると考えることができ

  • なしRewriteRule

    RewriteRule ^/$ /newform.php [R,L] 
    

    長所:

    • EMM ..私のサンドイッチにするのmod_rewriteを使用していますか?

    短所:あなたが他のルールのためのmod_rewriteを使用するつもりなら関係ないものの

    • 起動mod_rewriteのは、非常に軽い操作ではありません...

    2.残りの部分。 ..

    2.1。基本的にはmod_rewrite

    RewriteEngine On 
    
    RewriteRule ^pending/([0-9]+)$ pending/index.php?id=$1 [L] 
    
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([a-zA-Z_]+)/?([a-zA-Z_+]+)?/?([0-9]+)?/? $1.php?action=$2&id=$3 [L,QSA] 
    

    を使用して、私は以来、ルールの順序を変更し、あなたの「最初の」1が一致した保留/ [0-9] +にも$とそのポイントを超えて到達したことがないコントロール。

    2.2。これは(PHPファイル内のいくつかの変更が必要になります)、純粋な構成のみのソリューションではありませんが、MultiViews

    活用して、これは...あなたはmod_rewriteの使用を避けるせて

    ので、これを行うためには、あなたはMultiViewsオプションを有効にする必要があります

    Options +MultiViews 
    

    次に、あなただけの「/記事/ 123 /編集」のような「かわいい」URLを構築し、article.phpと呼ばれるファイルが含まれていた場合、それが呼び出されます、 .php拡張子は言及していませんでしたが その後、article.phpファイルは、それが保留中/ *についてはフィット...

    を見ている方法を$_SERVER["REQUEST_URI"]を取得し、それを解析することができます - このシナリオのために保留中のフォルダ内

    ErrorDocument 404 index.php 
    

    ErrorDocumentを使用することが可能ですそしてまた、あなたはそれを持っている...とし、mod_rewriteがない場合の両方があり、そう$_SERVER["REQUEST_URI"]

    を確認し、決定はあなた次第です);)

+0

PS最後の 'RewriteCond'行に** - p **とは何ですか? [mod_rewriteマニュアル](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond)には存在しません – poncha

+0

おかげで多くのことができました! -pはミスタイプなので、残念です。 –

関連する問題