用Htaccess和php改变URL结构的问题

时间:2010-04-18 06:35:44

标签: php .htaccess

我在修复网站上的网址http://www.abelputra.com时遇到问题:我想将www.abelputra.com/software.php更改为www.abelputra.com/software

我已经阅读了一个教程,建议如下:

对于.htaccess:

RewriteEngine On
RewriteRule ^ ([a-zA-Z0-9_-] +) $ index.php? Key = $ 1
RewriteRule ^ ([a-zA-Z0-9_-]+)/$ index.php? Key = $ 1

然后在php:

index.php --->

$Key=$ _GET ['key'];

if ($key == 'home')
{
    include ('index.php'); // Home page
}
else if ($ key == 'software')
{
    include ('software.php'); //
}
else if ($ key == 'webdesign')
{
    include ('webdesign.php'); //
}

问题是当我使用software.php和index.php实现菜单来调用页面时:

www.abelputra.com/index.php?key=software

所发生的事情是显示的页面是两个页面,下面是software.php和index.php页面。

是因为我正在调用“include()”函数吗?

index.php结构:

  1. 标题

  2. 内容 - >包含开头的单词

  3. 页脚

  4. software.php结构:

    1. 标题

    2. 内容 - >包含我的软件的解释

    3. 页脚

2 个答案:

答案 0 :(得分:0)

我不知道我是否理解正确,但如果您只想重写URL(例如删除.php扩展名),则无需实现网关脚本或更改主页的逻辑代码(修改URL除外)。

例如,以下内容将允许您访问免费提示 abelputra.com/freetips/185

RewriteRule ^freetips/(\d+)$ freetips_det.php?tip=$1 [L]

常规扩展删除是一个众所周知的主题,例如:

htaccess code to remove extension AND add+force trailing slash?

答案 1 :(得分:0)

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteBase /

## hide .php extension

# To externally redirect /dir/foo.php to /dir/foo

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]

RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^ %{REQUEST_URI}.php [L]