2

我正在尝试做的事情:

如果文件不存在,我需要将对文件的请求重定向到另一个域。例如:

http://www.mydomain.com/js/foo.js 

重定向到(如果不存在)

http://www.myanotherdomain.com/js/foo.js

我所做的:

我在 htaccess 的末尾写了下一行,但它们重定向了所有!

RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ http://www.myanotherdomain.com/$1 [L,NC]  

在这些行之前,我有很多这样的行(我正在使用 MVC(模型、视图、控制器)):

RewriteRule ^car/brand/?$ ?controller=Car&action=viewBrand [L,NC]  

怎么了:

它适用于不存在的文件,但似乎与 MVC 规则不兼容。这些规则必须匹配然后停止评估规则,因为 de "L" 标志。但它似乎继续评估规则并最终评估重定向规则。结果是这样的:

http://www.mydomain.com/car/brand/

http://www.myanotherdomain.com/?controller=Car&action=viewBrand

请问有人可以帮我吗?

非常感谢,

乔纳森

4

2 回答 2

1

尝试这个:

RewriteCond %{REQUEST_FILE} !-f
RewriteRule ^(.*)$ http://www.myanotherdomain.com/$1 [QSA,R,L]

另请参阅:如果找不到文件/文件夹,则修改目录

于 2012-10-05T14:57:01.327 回答
0

尝试将这些规则放在 MVC 规则之后:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.(js|png|jpe?g|gif|css|html?)$ http://www.myanotherdomain.com/$1.$2 [L,R,NC]

如果您想要所有请求,而不仅仅是脚本和图像等静态内容,请将RewriteRule行更改为:

RewriteRule ^(.*)$ http://www.myanotherdomain.com/$1 [L,R,NC]
于 2012-10-05T20:09:45.363 回答