このhtaccessは正しい書き換えですか?

私は htaccess ファイルに次のものを持っています。私がしようとしているのは、

domain.com/index.php/view/whatever accessable via domain.com/whatever and also redirect from non www to www.

これは、 index.php/view を持つすべてのURLに対して機能しますが、 index.php/view を持たない他のURLは機能しません。例: index.php/view がないため、 domain.com/index.php/site/pages はもう機能しません。

htaccessは、 index.php/view を持つURLにのみ影響し、他のものには影響しません。それを解決するために私は何をする必要がありますか?

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php/view/$1 [L]

RewriteCond %{http_host} ^domain.com [nc]
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

UPDATE. To narrow things down, How can i have both rules like so. i need them both

RewriteRule ^(.*)$ /index.php/view/$1 
RewriteRule ^(.*)$ /index.php/site/$1 
0

1 答え

したがって、 http://domain.com/index.php/site/のようなリクエストがあった場合ページのようなものであれば、それをそのまま通したいと思っていますが、 http://domain.com/whatever 、それを書き直したいのですか?

そこにある最初のルールはすべて(ファイルとディレクトリを除く)と一致します。 RewriteRuleを次のようなものに絞り込むことをお勧めします。

RewriteRule!^ index.php /index.php/view/$1 [L]

HTH

ニール

1
追加された
これで解決できません。質問を絞り込むには、どのようにして RewriteRule ^(。*)$ /index.php/view/$1 ^(。*)$ /index.php/site/$ 1 私はそれらのうちの1つしか持っていないようです。私は両方が必要です
追加された 著者 Pinkie,
私は本当にあなたがそれらの両方を持つことができるとは思っていません、あなたはおそらく、 RewriteRule ^ site /(.*)$/index.php/view/$1 RewriteRule ^ view /(.*)$/index.php/site/$1
追加された 著者 lfxgroove,
各URLを2つの方法で書き直すことはできません。また、mod_rewriteは正しい方法を知る方法がありません。
追加された 著者 user1064663,