如果所有其他规则都失败,htaccess 如何重定向?

如果所有其他规则都失败,htaccess 如何重定向?

htaccess 总是给我带来麻烦。每次我以为自己理解了它,htaccess 总是与我以为理解的相反。任何帮助都将不胜感激。

我想用 htaccess 做的是重定向 URI,例如:

www.example.com/get/something to  www.example.com/get.php/something
www.example.com/cape/something  to www.example.com/active.php/something

以及其他一些规则。我这样做效果很好,但效果不好的是,如果这些规则都不满足,则重定向到我的主域。因此,如果我最终得到一个 URIwww.example.com/anythingThatIsNotDefined/anything要不就www.example.com/anythingThatIsNotDefined我想将其重定向到http://www.anotherexample.com

我无法完成最后一部分。我当前的 htaccess 文件是:

RewriteEngine On
RewriteRule ^get/(.*)$ /get.php/$1 [L]
RewriteRule ^skin/(.*)$ /active.php/$1 [L]
RewriteRule ^cape/(.*)$ /active.php/$1 [L]

我需要修改什么才能将非 get 或 skin 或 cape 的内容重定向到我的其他域?

我需要添加更多内容,而不仅仅是获取、皮肤和披风,但一旦我让它工作起来,我应该能够轻松添加更多内容

提前谢谢,这确实困扰了我。

(如果这不是正确的堆栈站点,我很抱歉,这里和溢出之间是 50/50 的差距。我不确定它属于哪一个。)

答案1

.htaccess使用顺序来确定先发生什么(所有 Apache 配置文件都是这样)。对于您来说,您只需将所有“特殊”重写规则放在如下所示的捕获所有规则之前。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.otherdomain.com/$1 [R=301,L]

这条规则基本上说,对于任何不存在的硬资源(文件或目录),将请求重定向到http://www.otherdomain.com,包括 URI 字符串。假设这是在您的友好 URL 重定向之后发生的,则它们不会被捕获。

相关内容