【问题标题】:Htaccess create redirects for foldersHtaccess 为文件夹创建重定向
【发布时间】:2016-05-07 22:30:32
【问题描述】:

我正在运行 Apache 2.4.9。我的 .htaccess 文件中有这个规则

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.(css|js)$
RewriteRule ^.*$ /index.php?url=$0 [L]

它完美无瑕,除了在这种特殊情况下:
调用/myfolder时(如果“myfolder”文件夹确实存在),Apache会返回一个http301到url:/myfolder?url=myfolder

我真的不确定是什么导致了这种重定向。

你有什么想法吗?

谢谢!

【问题讨论】:

  • 此代码不执行重定向。重定向可能是缓存,因为您报告的是 301 重定向。清除浏览器缓存,看看是否能解决问题。如果这不能解决问题,请确定导致此重定向的原因。 index.php 中的代码可能吗?
  • 这绝对是导致重定向的原因。如果我将“url”修改为“url2”,重定向会改变。另外,我直接使用 curl 或 wget 进行尝试。所以这与缓存问题无关。

标签: apache .htaccess mod-rewrite


【解决方案1】:

在您的情况下,您可能会在所有其他条件之前添加一个附加条件。现在它说“如果文件名不是目录而不是文件”或“如果文件名不是目录并以 css/js 结尾”,效果很好。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.(css|js)$
RewriteRule ^.*$ /index.php?url=$0 [L]

这是一个内部重写,因此它不会执行任何类型的重定向。重定向可能来自 index.php 文件中的 header(..)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2021-06-13
    • 2014-04-03
    相关资源
    最近更新 更多