好吧,所以我现在真的很挣扎,我已经尝试过所有内容,阅读文章和教程,但我仍然不知道为什么这不起作用。
我有一个 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'解决了问题。
答案 0 :(得分:0)
这里的提示是:
浏览器仅输出包含的文件,它完全忽略 index.php及其内容。
尝试在要使用mod_rewrite和脚本执行此重新映射的上下文中禁用mod_negotiation(Options -Multiviews)。
mod_negotiation是最常见的原因,“其他”重写似乎正在您的资源上发生。