【问题标题】:Using RewriteRules in httpd.conf在 httpd.conf 中使用 RewriteRules
【发布时间】:2014-07-19 11:13:49
【问题描述】:

每当有人访问 www.cars.com/parts 我希望他们被重定向到 www.planes.com。之后的路径是相同的。例如 www.cars.com/parts/engine 应该去 www.planes.com/engine 和 www.cars.com/parts/wheels 应该去 www.planes.com/wheels 等等。截至目前,我的 httpd.conf 文件中有以下内容:

 RewriteEngine on
 ServerName www.cars.com
 DocumentRoot /var/www/htdocs
 RewriteCond %{HTTP_HOST} www.cars.com/parts$ [NC]
 RewriteRule ^/(.*)$ www.planes.com$1 [R=301,L]

但是,问题在于 www.cars.com/parts 将我带到 www.planes.com/parts 而不是 www.planes.com。 非常感谢您的帮助。

【问题讨论】:

    标签: apache mod-rewrite rewrite httpd.conf


    【解决方案1】:

    尝试将 RewriteRule 更改为:

     RewriteRule ^/parts(.*)$ www.planes.com$1 [R=301,L]
    

    $1 替换为括号中检测到的模式。所以现在它应该在 /parts 之后附加所有内容。

    【讨论】:

    • 看起来它现在在 /parts 之后附加所有内容。谢谢。我现在唯一的问题是,当我访问 www.cars.com 时,它会将我带到planes.com。有没有办法得到它,所以如果我去 www.cars.com 它仍然会把我带到cars.com 的主页而不是planes.com 的主页。
    • 尝试 RewriteCond %{HTTP_HOST} ^www\.cars\.com/parts$ [NC]
    • 反斜杠到底有什么作用?它仍然把我带到错误的主页。如果我直接访问汽车主页,是否必须包含另一个 RewriteRule,它将忽略任何重写规则?
    • 在正则表达式中,dot(.) 表示匹配任何字符。使用反斜杠指示解析器将其视为字符点。 HTTP_HOST 不包含完整的 URI,因此请尝试 REQUEST_URI 变量:RewriteCond %{REQUEST_URI} ^/parts(.*)$ [NC]
    猜你喜欢
    • 2013-10-30
    • 2019-01-01
    • 1970-01-01
    • 2011-08-04
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2011-04-07
    相关资源
    最近更新 更多