0

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

其他错误的事情包括:

  • .必须被转义才能在正则表达式中具有其字面意义,这就是第二个参数RewriteCond
  • (.*)如果你包括在内会更安全^$
  • request_filename应该大写
  • 将 URL 重写为自身是令人困惑且不必要的,只需将-其作为第二个参数传递给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 回答