0

私のサイトの1つにhtaccessがありますが、http://www.online4movies.com/でサイトを開こうとすると面白いエラーが発生します.http: //online4movies.com/を使用しないと機能しません

ここにコードがあります

<ifmodule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.online4movies.com
    RewriteRule (.*) http://www.online4movies.com/$1 [R=301,L]
    RewriteCond %{request_filename} -f
    RewriteRule ^(.*) $1 [L]
    RewriteRule ^([a-z]+)(/([^/]{0,32})(/.+)?)?$  index.php?a=$1&q=$3    [L]

</ifmodule>
4

2 に答える 2

1

上記のルールにはいくつか問題がありますが、実際に問題を引き起こしている!のは、最初の の右オペランドの前にa を忘れたことですRewriteCond

間違っている他のものは次のとおりです。

  • ドット.は、正規表現で文字通りの意味を持つようにエスケープする必要があります。これが の 2 番目の引数RewriteCondです。
  • 含めた(.*)方がはるかに安全です^$
  • request_filename大文字にする必要があります
  • URL をそれ自体に書き換えるのは紛らわしく、不要です。代わりに-の 2 番目の引数として渡すだけです。RewriteRuleしかし、そのルールは必要ありません。単純に を否定しRewriteCondて、次のルールに適用します。

代わりにこのファイルを試してください:

<ifmodule mod_rewrite.c>

    # Turn mod_rewrite on
    RewriteEngine on

    # Force a www on the beginning of the URL
    RewriteCond %{HTTP_HOST} !^www\.online4movies\.com
    RewriteRule ^(.*)$ http://www.online4movies.com/$1 [R=301,L]

    # Parse URLs for files that don't exist and send them through index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([a-z]+)(/([^/]{0,32})(/.+)?)?$  index.php?a=$1&q=$3 [L]

</ifmodule>
于 2012-05-21T10:46:06.730 に答える
0

同じ問題に関連するものをいくつか見つけました..

RewriteEngine On
RewriteCond %{HTTP_HOST} !^my-domain\.com$ [NC]
RewriteRule ^(.*)$ http://my-domain.com/$1 [R=301,L]

"また"

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

リンク :-一般的な htaccess リダイレクト www から非 www へ

于 2012-05-21T10:45:15.887 に答える