2017-08-21 7 views
2

私のウェブサイトには、以下のhtaccessファイルがあり、過去2年間は完全に動作していました。最近、私は新しいホスティングパートナーにサーバーを移行し、期待どおりに動作していないようです。私はサーバーがmod_rewriteモジュールをサポートしていることを確認しました。そして、私は[QUERY_STRING] =>私が指定したURLは何もnullであり、すべてのURLがホームページにルーティングされていることが分かりました。私は何を修正する必要があるかを誰にでも伝えることができます。私はstackoverflowで多くの答えを見て何も私のために働いた。私はこのhtaccessファイルの初心者です。.htaccessファイルを変更してQUERY_STRINGを与える方法は?

Options +FollowSymLinks 
RewriteEngine On 
Options -Indexes 

# REWRITING index.php AS index # 
RewriteRule ^index/?$ index.php [NC] 

# Route The Pages # 
RewriteRule ^index/([{a-z}]+)/?$ index.php?$1 [NC,L] 

RewriteRule ^index/home/([0-9]+)/?$ index.php?home&p_id=$1 [NC,L] 
RewriteRule ^index/page/([{a-z}{\-\}{0-9}]+)/?$ index.php?page&show=$1 [NC,L] 

RewriteRule ^index/gallery/([{image}{video}]+)/?$ index.php?gallery&type=$1 [NC,L] 
RewriteRule ^index/gallery/([{image}{video}]+)/([0-9]+)/?$ index.php?gallery&type=$1&album=$2 [NC,L] 
+1

パターンに中括弧が入っているのはなぜですか?動作していないURLを教えていただけますか? – anubhava

+0

URLの1つはtgmvidyaniketan.edu.in/index/gallery/image – Ricky

答えて

1

あなたがvideoimageに一致している場合は、{として{video}と} {will match literallyビデオを} `持っている理由はありません。

はあなたの.htaccessこの方法を持っている:

Options +FollowSymLinks -Indexes -MultiViews 
RewriteEngine On 

# REWRITING index.php AS index # 
RewriteRule ^index/?$ index.php [NC,L] 

# Route The Pages # 
RewriteRule ^index/([a-z]+)/?$ index.php?$1 [NC,L,QSA] 

RewriteRule ^index/home/([0-9]+)/?$ index.php?home&p_id=$1 [NC,L,QSA] 

RewriteRule ^index/page/([a-z0-9-]+)/?$ index.php?page&show=$1 [NC,L,QSA] 

RewriteRule ^index/gallery/(image|video)/?$ index.php?gallery&type=$1 [NC,L,QSA] 

RewriteRule ^index/gallery/(image|video)/([0-9]+)/?$ index.php?gallery&type=$1&album=$2 [NC,L,QSA] 
+0

です。まったく同じバージョンを投稿しようとしていました - @Rickyここでデモを見ることができます:http://htaccess.mwl.be?share= 680305d4-dc3c-5d94-8016-1f890e9b0220 – Bananaapple

+0

ありがとうございました。しかし、それでも動作しません。ホームページを表示しています – Ricky

+0

@Bananaappleはサイトリンクに感謝しています。私はこのテストシナリオを知らなかった – Ricky

1
Options +FollowSymLinks 
RewriteEngine On 
Options -Indexes 

空のクエリ文字列は、(おそらく、サーバー更新の結果として)有効にされてMultiViewsと一致しています。あなたの.htaccessファイルの先頭にMultiViewsを無効にしてみてください:有効になっている

Options +FollowSymLinks -Indexes -MultiViews 
RewriteEngine On 

MultiViews場合、/index/<something>の要求が/index.php/<something>に内部サブリクエストにつながるとあなたの残りのディレクティブのどれもが一致しません。あなたの現在の正規表現は、おそらくあなたが意図しよりも多くのマッチングされているので


はしかし、あなたはまだ、anubhavaを示唆するもののようなものにあなたの正規表現を更新する必要があります。しかしあなたの現在のパターンはあいまいです。たとえば、[{a-z}{\-\}{0-9}]+はどう一致する必要がありますか?おそらくそれが<letter>-<digit>であることを意図したようですか?しかし、現在のところ、文字、数字、ハイフンの組み合わせ(anubhavaがどのように解釈しているのか)は一致していますか?

+1

ありがとうMrWhite。オプション+ FollowSymLinks-MultiViewsは仕事をしました – Ricky

+1

ようこそ。 'MultiViews'(mod_negotiationの一部)は、mod_rewriteディレクティブとの衝突の一般的な原因です(ファイル拡張子のないファイルを参照する場合)。 – MrWhite

関連する問題