htaccess:使用索引参数重写无法正常工作

时间:2016-01-27 13:20:28

标签: php apache .htaccess mod-rewrite include

好吧,所以我现在真的很挣扎,我已经尝试过所有内容,阅读文章和教程,但我仍然不知道为什么这不起作用。

我有一个 index.php 文件:

echo "some test";
if(isset($para)) {
    include $para . '.php';
} else {
    echo "there's no parameter";
}

因此,如果用户使用参数“home”(http://mypage.com/test/index.php?para=home)查看该页面,他将获得正确的页面。这确实有效。

的.htaccess

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mypage.com$ [NC]
RewriteRule ^(.*)$ http://mypage.com/test/$1 [R=301,L]
RewriteBase /test/
RewriteRule ^([a-z]+)$ index.php?para=$1

但是当我尝试使用重写的链接(http://mypage.com/test/home)进行导航时,浏览器只输出包含的文件,它完全忽略 index.php 及其内容。

我的htaccess文件有问题吗?或者我是否需要更改某些服务器配置?因为我在不同的网络服务器上有一个不同的htaccess文件,它没有任何问题。但它在我现在正在使用的网络服务器上不起作用(遗憾的是,我只能访问htdocs文件夹)。

编辑:刚刚检查过phpinfo,该页面在apache2上的PHP 5.3.28上运行。

解决!

问题解决了。添加'选项-Multiviews'解决了问题。

1 个答案:

答案 0 :(得分:0)

这里的提示是:

  

浏览器仅输出包含的文件,它完全忽略   index.php及其内容。

尝试在要使用mod_rewrite和脚本执行此重新映射的上下文中禁用mod_negotiation(Options -Multiviews)。

mod_negotiation是最常见的原因,“其他”重写似乎正在您的资源上发生。