.htaccess阻止默认文件夹301重定向

时间:2016-10-28 04:38:45

标签: php .htaccess redirect http-status-code-301

我有一个非常小的网站,我的.htaccess设置为允许网址:

mysite.com/brand/login
mysite.com/brand/dashboard
mysite.com/controller

这些全部重定向到:

mysite.com/driver.php?___=brand/login
mysite.com/driver.php?___=brand/dashboard
mysite.com/driver.php?___=controller

我只是为此使用了一个重写规则:

RewriteRule ^(([a-zA-Z0-9\-\_]+/?)*)$ index.php?___=$1 [L,QSA]

但无论如何,它确实很棒,直到我的网页与我网站中的文件夹同名。

// I navigate to:
mysite.com/javascript

// The site automatically provides a 301 redirect to
mysite.com/javascript/? ___=javascript

现在,丑陋的网址已经出现在我的用户中了。浏览器。有没有办法告诉网站我想自己处理所有重定向?

编辑:我使用fiddler确定了这一点。另一个例子:

enter image description here

1 个答案:

答案 0 :(得分:0)

Welp在发布后立即找到答案。 .htaccess中的这一行解决了这个问题。

DirectorySlash Off

当然,我必须清除浏览器缓存以使其忘记301。

https://httpd.apache.org/docs/2.4/mod/mod_dir.html#directoryslash

  

DirectorySlash指令确定mod_dir是否应该修复   指向目录的URL。

     

通常,如果用户请求没有尾部斜杠的资源,   指向一个目录,mod_dir将他重定向到同一个目录   资源,但有斜杠

安全警告:

  

关闭尾部斜杠重定向可能会产生信息   披露。考虑mod_autoindex处于活动状态的情况   (Options + Indexes)和DirectoryIndex设置为有效资源(例如,   index.html)并且没有为该URL定义其他特殊处理程序。   在这种情况下,带有斜杠的请求将显示index.html   文件。 但是没有尾随斜杠的请求会列出目录   内容。