php - htaccess 意外重定向到文件夹

标签 php apache zend-framework .htaccess redirect

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

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

我的域名指向文件夹/

当我输入地址 example.com/profile/ 时,它会转到 Controller 配置文件,这很好。 当我输入地址 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。

最佳答案

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

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

关于php - htaccess 意外重定向到文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6546818/

相关文章:

php - 将命名空间与从变量创建的类一起使用

PHPEXCEL设置UTF-8编码

php - 传递数组以在 where 子句中使用 "in"查询时转义值的 Codeigniter 问题

PHP mysql全文 bool 搜索,如何清理搜索的关键字并匹配所有单词?

apache - mod_rewrite 中的转义空格

mysql - 使用 zend Framework 2 更新 mysql 记录

apache - .htaccess - 如何在某些页面上设置 SSL(脚本需要修改)

apache - 重写文件路径中的 RewriteRule 检查文件是否存在

php - 没有 Zend-Framework MVC 的 Zend-form - viewscript 不显示元素,但它们存在并由 var_dump() 显示

php - Zend Regex > 路由模块问题