【问题标题】:RewriteRule redirect重写规则重定向
【发布时间】:2008-12-01 17:46:36
【问题描述】:

好的,我有这个 RewriteRule,它应该将对文件 base.css 的任何请求重定向到 {.htacces 文件的文件夹}/include/style/base.css,但它只是在无限循环中不断重定向,我想L 参数将确保不会发生这种情况。

RewriteRule (.*)/base.css$ include/style/base.css [L,NC,R=301]

它还会重定向到http://localhost/C:/somemaps/include/style/base.css,它也不应该这样做。

谁能告诉我如何解决这个问题?
我也想拥有 RewriteRule 以便它将任何 file.css 重定向到 {.htacces 文件的文件夹}/include/style/file.css
顺便说一句,.htacces 文件位于网站的根目录中(不是服务器的根目录!)

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    您对重定向和重写感到困惑。重定向是告诉浏览器转到另一个 URL 的 HTTP 状态代码。您实际上只是想将该位置重写到另一个文件位置。试试

    RewriteRule (.*)/(.*).css$ /include/style/$2.css [L,NC]
    

    如果这不起作用,请尝试在 RewriteEngine On 之后立即添加以下内容

    RewriteBase /my-virtual-folder-path-where-htaccess-is-stored
    

    【讨论】:

    • 您将不得不更具体地说明什么不起作用。您可能必须使用 RewriteBase 来获取 /include/style 文件的正确路径。
    【解决方案2】:

    我还想拥有 RewriteRule 以便它将任何 file.css 重定向到 {.htacces 文件的文件夹}/include/style/file.css

    试试这个:

    RewriteRule ([^/]+).css$ /include/style/$1.css [L,NC]
    

    【讨论】:

    • 请注意,您是在 重写 URL(改变 Apache 的处理方式),而不是 重定向 它(告诉浏览器它已移动)。这是理解 mod_rewrite 的关键区别。
    【解决方案3】:

    这个 R=301 发出一个新请求。因此它再次评估 RewriteRule。

    尝试使用重写条件 (RewriteCond) 排除此路径/目录。

    【讨论】:

    • 我不认为他试图进行重定向,因为重定向样式表文件没有任何意义。我认为他只是想要一个普通的旧物理文件路径重写。
    猜你喜欢
    • 2012-08-27
    • 2020-11-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多