2012-03-08 19 views
2

私はすべてのURLをPHP $ _GETパラメータにルーティングできるように、htaccessを使って自分のサーバを設定しました。サイトのURLが.htmで終わるようにします。現在、私はこのhtaccessファイルを持っている、と私はそれで何の問題もなかったことがありません:私はちょうどjsのフォルダなどに.htmのファイルを使用していますTinyMCEのをインストールしているがTinyMCEとhtaccessとの競合

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^ajax/([A-Z,a-z,0-9,\_/]*).htm$ index.php?route=$1&opformat=ajax [QSA] 
RewriteRule ^([A-Z,a-z,0-9,\_/]*).htm$ index.php?route=$1 [QSA] 

を"/js/tinymce/prop.htm"なんらかの理由で、このURLが入力されると、htaccessはphpにルーティングし、動作しません。

RewriteCond %{REQUEST_FILENAME} !-fは、このことが起こらないようにする必要があります。それはなぜですか? RewriteCond %{REQUEST_FILENAME} !-dが動作しています。この例では "/ js/tinymce"に行き、ディレクトリリストを見ることができます。

ありがとうございました。

+0

念のためにあなたがする '「/js/tinymce/prop.htm」行くとき、'あなたが実際に/ "'にリダイレクトされますかjs/tinymce/prop.php "'? – kontur

+0

いいえ、私はそれが起こるはずのものではありません。基本的に、私のhtaccessは、 "/foo/bar.htm"を "index.php?route = foo/bar"に書き換えることになっています。 – Raiden616

答えて

0

私はあなたがこのようにコードを変更することをお勧め:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule^- [L] 

RewriteRule ^ajax/([^.]*)\.htm$ index.php?route=$1&opformat=ajax [L,QSA,NC] 

RewriteRule ^([^.]*)\.htm$ index.php?route=$1 [L,QSA,NC] 
+0

うわー、ありがとう。あなたは何を変えたか説明してもらえますか?自分の利益のためにちょうど – Raiden616

+0

確かに。私の最初のルールは、基本的に**ファイルやディレクトリの場合**は何もしない**と言っています。 2番目のルールは 'ajax/anytext.htm'を' index.php?route = anytext&opformat = ajax'に転送します。 3番目のルールは 'anytext.htm'を' index.php?route = anytext'に転送します。 Query String AppendにはQSAフラグを使用し、最後のルールにはLを使用することが重要です。 – anubhava

+0

申し訳ありませんが、それは私のために働いていないようです。私はあなたのコードを使用し、任意のファイルパスはURLが見つからないと表示されます。 "RewriteRule^- [L]"行を取り除くと、以前と同じように動作しますが、元の問題は解決しません。S – Raiden616

関連する問題