2009-05-13 13 views
0

/製品/連絡先にこの私の現在の.htaccessでモッズ書き換え - 簡単な質問

Options +FollowSymLinks 
DirectoryIndex index.php 

RewriteEngine On 
RewriteBase /product/ 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(.+)\.php$ ./$1/ [R=301,L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

RewriteRule ^contact/?$ ./contact.php [QSA,L] 

すべてが今、正常に動作します。..

  • /製品/接触リターン/
  • /製品/contact.php/product/contact/

質問..すべての私の.phpは/連絡先/ /ヘルプ/ /よくある質問/

  • 今、私は私が試したのhtaccess
  • にcontact.php help.php faq.phpを追加するべきだろうにする方法10

    • RewriteRule ^(。*)/ $ $ 1.php [QSA、L]を追加しますが、リターンループになります。

    は私がそれを修正する方法を知ってみましょう;)

  • +0

    、あなたはすでに問題を解決しようとしていたので、たぶんそれだけだが、あなたの.htaccessの一番下の行は、すでに/製品/ヘルプ/ /product/help.phpにリダイレクトということですわざと? –

    答えて

    0

    Apacheはhelp.phphelp/を書き換えしようとした後、help.phphelp/になどなどになるため、無限ループを行います

    それが本当に必要なら、それを行いますあなたのアプリケーションで(PHPの例):

    <?php 
    // The (\?.*)? so it "ignores" query strings 
    if (preg_match('/\.php(\?.*)?$/', $_SERVER['REQUEST_URI'])) { 
        header('Location: ' . str_replace('.php', '/', $_SERVER['REQUEST_URI'])); 
        exit; 
    } 
    
    +0

    ええ..この方法を行うことができます – wow

    +0

    正規表現でドットをエスケープします。さもなければ、URIパスが 'foo-php'や' bar/php'のように 'php'で終わると無限ループになります。 – Gumbo

    +0

    ニースキャッチグンボ、答えを修正しました。ありがとう! –

    0

    は、このラインが後方であることは可能ですか?

    RewriteRule ^(.*)/$ $1.php [L,QSA] 
    

    私が理解しているように、これはdomain.com/product/help/をdomain.com/product/help.phpに書き換えます。

    RewriteRule ^(.*).php $1/ [L,QSA] 
    

    これは をdomain.com/product/help/するdomain.com/product/help.php書き換える必要があります試してみて、domain.com/foobar/baz/するdomain.com/foobar/baz.php など、あなたのリライト文でこれを行うには悲しいこと

    +0

    が動作していません:)あなたの入力に感謝 – wow