htaccess意外重定向到文件夹

时间:2011-07-01 10:34:10

标签: php apache zend-framework .htaccess redirect

我对我的问题很奇怪。我正在开发Zend Framework应用程序并具有以下文件结构:

/
/application/
/public/
/public/.htaccess
/public/index.php
/public/js/
/public/style/
/public/profile/
/.htaccess

我的域名指向folder /

当我输入地址example.com/profile/时,它会转到控制器配置文件,这很好。 当我输入地址example.com/profile时,服务器会将我重定向到: example.com/public/profile/

我希望有一个解决方案,无论何时我要求: example.com/profile/example.com/profile

将呈现相同的页面,但第二个版本为我提供了重定向,我不知道为什么。

/.htaccess文件是:

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]

此文件的作用是将所有流量从/向/ public路由,但不进行任何重定向。

/public/.htaccess文件是:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

有人可以帮我这个吗?感谢。


我修好了。如果有人遇到同样的问题,这是解决方案: 要解决此问题,您必须设置以下选项并禁用DirectorySlash

Options -Indexes FollowSymLinks
DirectorySlash Off

现在,当你指向目录时,Apache不应该在uri的末尾添加尾部斜杠。 这也禁用了使用尾部斜杠重定向到uri。

2 个答案:

答案 0 :(得分:1)

可选择匹配最后一个/。将.htaccess文件更改为:

RewriteEngine On
RewriteRule ^(.*)/?$ public/$1 [L]

答案 1 :(得分:0)

这对我有用:

RewriteEngine On
RewriteRule ^/$|^(.*)$  /public/$1 [QSA,NC,L]