mod_rewrite主页上不显示'index /'的规则 - PHP

时间:2012-09-28 05:13:40

标签: php apache .htaccess mod-rewrite

我已经看过很多关于这个主题的内容,但我似乎无法让这件事情像我想要的那样......

我有这个.htaccess文件:

RewriteEngine on
RewriteRule ^([^/]+)/$ $1.php

一切似乎都很好。当我去的时候,例如

localhost/website

中的内容
localhost/website/index.php
显示

。这是预料之中的。我的链接在PHP中的变量中,如下所示:

$home = 'index/'
$contact = 'contact/'

等等...

然后我转到其他链接,点击一下,然后点击主页链接,URL就是这样:

localhost/website/index/

这是我的href所指向的,所以它的预期......但我真的希望它是:

localhost/website

那么如何使用变量$home = '';代替$home = index/';并获得我想要的内容呢?我觉得我错过了应该放在.htaccess文件中的内容。

我想我还应该提一下我的导航工作方式是我有一个PHP循环来检查当前页面,以保持其图形突出显示而不是。

此循环检查页面变量,例如$home$contact,如果它们等于满是页面变量的数组中的键值,则它使用突出显示的链接集:具有您使用浅色按钮的页面效果。

这里的问题是,对于索引页面,我使用'index/',但我想使用'',但这似乎不起作用。它在'index/'的条件检查时有效,但在检查空字符串('')时却无效。

修改

以下是一些可能对我的案例有帮助的其他代码段:

// Navigation links
$home           =   '';
$contact_us     =   'contact/';

// Button array
$page_nav_lt = array(
$home           =>  $home_but_lt,
$contact_us     =>  $contact_but_lt
);

// Loop conditional (it's _alt below because it's a function in a class)
if ($current_page == $key) {
    $menu_output .= $image_dir . $ds . $page_nav_alt[$key];
    $menu_output .= '" id="alt" class="data-id-yes';
}

1 个答案:

答案 0 :(得分:1)

您可以使用$home = '';,并将其添加到.htaccess:

DirectoryIndex index.php index.html

我将index.html作为示例包含在内,但您可以拥有任意数量的默认文件名,并按顺序检查它们。

编辑:你可以测试家庭为'',但<a href="">只会指向当前页面。通常链接到主页,您将链接到“/”,它指向服务器的根目录。由于您的站点正在子目录中进行测试,因此您希望它是“/ site /”。通过将$ root变量设置为“/ site”,然后在将站点移动到根目录时将其更改为“”,可以使链接在不同的环境中工作。然后您的链接将显示为“/ site /”和“/ site / contact”。