2017-07-20 5 views
1

私は電子商取引のWebサイトを更新しましたが、新しい静的CMSシステムをサブディレクトリ(/ wear)にインストールする必要がありました。主要な電子商取引ストアはまだルートディレクトリ(/)にあり、大量の製品とSEOの影響があるため、そこに残す必要があります。.htaccessリダイレクトindex.phpのみ(後で変数を除いた場合)

私はindex.phpのための要求がある場合は、同時に/

を着用/ だけ index.phpのための要求はにリダイレクトするように設定しますか?XXXXX私はまだそれを希望しますindex.phpファイルを使用してください。

次の.htaccessコードを試してみましたが、すべてをリダイレクトしています。誰もこれで私を助けることができますか?私は、複数のスレッドがあることを知っているので、これを尋ねることをお詫びしますが、誰も良い答えを出すように見えませんでした。

試み1

RedirectMatch /index.php https://domain/wear/ 

Attemp 2

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /wear/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

答えて

1

問題は、あなたのRewriteBaseから来ています。 /wear/に設定すると、RewriteRule ^index\.php$ - [L]は実際にはあなたが望むものではないRewriteRule ^wear/index\.php$ - [L]に実際に変換されます。

私はこのような何かしようとするだろう:何それがないことである

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^index\.php$ /wear/ [L,R=301] 

を:クエリ文字列が空であることを確認し、それがある場合は、だけなので/index.php、リクエストURIの先頭に(index.phpをリダイレクト)〜/wear/

また、mod_rewriteがアクティブであることを確認する必要があります。

これを行うには、<IfModule mod_rewrite.c></IfModule>の部分を削除します。 mod_rewriteが利用できない場合、RewriteEngineコマンドが認識されないため、エラー500が発生します。

+1

ありがとうございました!完璧に動作します – JDGD

関連する問題