【问题标题】:Relative URLs break, .htaccess solution?相对 URL 中断,.htaccess 解决方案?
【发布时间】:2012-01-05 11:06:45
【问题描述】:

快速总结一下我正在做的事情 - 带有可怕的自定义 CMS 的大型网站正在扩展以迎合多个城市,他们完全拒绝使用子域并希望拥有如下几个城市:

www.example.com/cityx/
www.example.com/cityy/
www.example.com/cityz/

整个 CMS 正在从根 url 移动到一个子文件夹并为每个单独的城市复制,该网站是使用“/css/style.css”和“/js/jquery.js”等相对 URL 编写的。我会单独修改每个文件,但我必须处理 300 多个 php 文件!

.htaccess 中有没有一种方法可以更改任何相对 url 以转到新的根目录?即有相对路径重定向到 www.example.com/cityx/ ?

【问题讨论】:

    标签: .htaccess relative-path


    【解决方案1】:

    我不确定您想要实现的具体目标,但我知道您可以做到以下几点:

    Options -Indexes
    Options +FollowSymLinks
    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^css/(.+)$ cityx/css/$1 [R=302,NC]
    </IfModule>
    

    但是,我假设您希望每个城市都有自己的 css 文件?在这种情况下,我非常怀疑这是否可能。

    我也不确定您采取的机智是否是最好的方法。您是说您只是通过为每个城市复制它来扩展 CMS?将城市集成到 CMS 本身并使用 htaccess 将子目录(例如 /cityx /cityy)重写到其相关的 CMS 页面(例如 /index.php?city=cityx)或类似页面不是更好吗?我猜这不是您最后一次必须在 CMS 中更新某些内容,因此将来您所做的任何更改都必须在所有城市中复制。值得深思。

    另外,最后想到的是,如果一个 CMS 有 300 个页面,您必须更改这些页面只是为了更改 CSS 和 JS 文件的链接,那么它可能是一个糟糕的软件!任何网站都不应该有多个对单个 CSS 或 JS 文件的引用,如果有不同的头文件或其他东西,可能有两个或三个,但是有 300 个带有这些引用的单独文件是荒谬的。是时候换一些更好的软件了。 :)

    【讨论】:

    • 老实说,客户正在为我们制造这个地狱——我们想要一个快速的解决方案,然后再跑到山上! CMS 是我一生中见过的最复杂、最可怕的软件。最糟糕的是,在我们超出预算之前,我们只剩下一周的资金来完成这项工作。你说得对,每个网站都有自己的 CSS 等,这不是我做事的方式,但我们从另一家发誓的公司继承了这段代码。如果我找不到 .htaccess 解决方案,我将不得不尝试说服客户使用子域
    • 嗯...我怀疑有办法做到这一点。因为它们是相对于根目录的,所以当 htaccess 控制它时,就没有可靠的方法来找出请求是从哪个城市子目录发出的。您也许可以使用推荐人破解某些东西,但恐怕我的知识到此为止。无论如何,为此一周的资金似乎有点短。可能值得回到客户那里,解释情况(让他们知道未来的维护将花费更长的时间并因此花费更多)并看看他们说了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2012-12-13
    • 2020-02-23
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多