我遇到重定向问题。
我的htaccess文件中有这段代码。
<script>
myFunc.set('@(myValueFromModel)');
myFunc();//can be called repeatedly now
</script>
此代码工作正常。此代码将没有www的所有请求重定向到www。
但我的问题是,当我尝试访问属于子域的RewriteCond %{HTTP_HOST} ^frutasadomicilio.cl
RewriteRule ^ http://www.frutasadomicilio.cl%{REQUEST_URI} [L,R=301]
Redirect 301 /index.html http://www.frutasadomicilio.cl/venta-de-verduras
Redirect 301 http://frutasadomicilio.cl http://www.frutasadomicilio.cl/venta-de-verduras
时,我被重定向到resources.frutasadomicilio.cl
。
答案 0 :(得分:-1)
我假设您的子域指向主域文档根目录下的子目录(常见设置)?例如。 resources.
- &gt; /resources/...
?
这种情况下的问题是继承了文件系统上父目录的.htaccess文件。因此,resources.example.com
请求将导致重定向(Redirect 301 /index.html ...
)。
此外,您不应将mod_alias重定向(即。Redirect
)与mod_rewrite重定向(即RewriteRule
)混合使用。如果你使用的是mod_rewrite,那么只使用mod_rewrite。
Redirect 301 http://frutasadomicilio.cl http://www.frutasadomicilio.cl/venta-de-verduras
此行实际上什么都不做,应该删除。 Redirect
采用根相对路径(以斜杠开头)作为源路径,而不是绝对路径,因此永远不会匹配。
最后两个Redirect
可以重写如下(使用mod_rewrite)以避免不必要的重定向:
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(index\.html)?$ /venta-de-verduras [R=301,L]
现在,重定向仅在主机启动www.
时发生(因此排除resources.
)。
或者,您可以省略上述RewriteCond
指令,并在/resources
子目录中包含.htaccess文件,并带有以下指令。
RewriteEngine On
默认情况下不会继承mod_rewrite指令,因此只需在子目录中启用重写引擎就可以防止执行父.htaccess中的mod_rewrite指令(请注意,仍会处理父.htaccess文件中的其他模块)。如果您需要排除父.htaccess文件中的大量重定向,这可能更为可取。