【问题标题】:Apache htaccess redirect directory and some contentsApache htaccess 重定向目录和一些内容
【发布时间】:2013-01-16 19:47:40
【问题描述】:

我目前正试图让 Apache 将对目录或其内容的任何请求重定向到单个文件。有问题的目录是/press。这恰好包含网站上其他页面正在使用的多个图像。我想将/press/press/* 重定向到/press-materials/,但允许完成任何图像请求(例如/press/logo.png)。我尝试了一些解决方案并获得了重定向工作的一个方面,但它不符合其他标准。

我是 Apache 和 REGEX(我明知需要处理的东西)的新手,所以这可能是一个简单的修复。

这是将 /press 重定向到 /press-materials 但 /press/filename 返回 404 错误的 htaccess 调用。

RewriteRule ^press/$ /press-materials/ [R,L]

6 小时后,这就是我所得到的。任何帮助将不胜感激。

【问题讨论】:

    标签: regex apache .htaccess redirect


    【解决方案1】:

    假设您希望允许对/press 中实际存在的文件的所有请求(如/press/logo.png):

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^press/.* /press-materials/ [R,L]
    

    仅当/press 中没有现有文件被请求时才会执行重写。

    另一种只允许特定文件类型的解决方案(例如,只允许 *.jpg*.png*.gif)并且仅当它们存在于 /press 目录中但不存在于子目录中时:

    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_URI} !^/press/[^\/]+\.(png|jpg|gif)$
    RewriteRule ^press/.* /press-materials/ [R,L]
    

    关于重写条件的更多信息可以找到here

    【讨论】:

    • 我玩过这个,它最初没有用。我发现我有一个指令在这些请求之前将所有请求推送到带有 L 标志的 index.php 文件,并且它破坏了 /press/ 语句。我将 index 指令移到底部,它现在可以工作了。感谢帮助。我绝对需要一本关于 Apache 的好书。哈哈
    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多