2017-10-15 19 views
2

初めて.htaccessを使用していますが、ループの問題が発生しています。私は、次のことを達成しようとしている:http://something.com/main.htaccessはすべてのリクエストをindex.phpに書き換えます

  • http://something.com/anything書き換えに

    1. http://something.com書き換えhttp://something.com/index.php?page=anything

    にこれまでのところ、私の現在の試行が満足に機能しているこの、次のようになります。

    RewriteEngine on 
    RewriteBase/
    
    RewriteRule ^/?$ /main [L] 
    
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    
    RewriteRule ^(.*)$ /index.php?page=$1 [NC,L] 
    

    しかし、http://something.com/index.phpへのリクエストがhttp://something.com/index.php?page=index.phpになるように、両方の書き換え条件を削除したいと思います。 2つのRewriteCond行を削除するとループが発生し、書き換えは機能しません。

    私は間違っていますが、どのように問題を解決できますか?ありがとう!

  • 答えて

    1

    あなたはこれらの条件を削除することができますが、あなたのルールを逆にして、ターゲットのURIから先頭/を削除する必要があります。また

    RewriteEngine on 
    RewriteBase/
    
    RewriteRule ^(.+)$ index.php?page=$1 [QSA,L] 
    
    RewriteRule ^/?$ main [L] 
    

    今、あなたの最初のルールもindex.php?page=...にCSS/JS /画像のリクエストを書き換えますことを覚えておいてください。あなたが最初RewriteRule前にこの条件を追加することを回避したい場合:

    RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ [NC] 
    
    +0

    ありがとうございました!これは私が望むのとまったく同じです。書き換えは、外部のCDNからコンテンツを動的に読み込むウェブアプリ向けです。意図された振る舞いは、この場合、すべてが 'index.php'を通過することです。 –

    関連する問題