Php 获取URL参数并使用htaccess清除URL

Php 获取URL参数并使用htaccess清除URL,php,.htaccess,redirect,iframe,Php,.htaccess,Redirect,Iframe,我正在创建一个有2个iframe的网站,第一个iframe播放一首歌,第二个iframe拥有该网站。这是我的index.php文件: <?php $base_url = 'http://www.mywebsite.com/site/'; ?> <iframe src="<?php echo $base_url; ?>music.php" frameborder="0" width="960px" height="1px"></iframe> &l

我正在创建一个有2个iframe的网站,第一个iframe播放一首歌,第二个iframe拥有该网站。这是我的index.php文件:

<?php
$base_url = 'http://www.mywebsite.com/site/';
?>
<iframe src="<?php echo $base_url; ?>music.php" frameborder="0" width="960px" height="1px"></iframe>

<?php
$page = $_GET['params'];

switch ($page) {
    case 'home':
        $page = 'home.php';
        break;
    case 'contact':
        $page = 'contact.php';
        break;
}
?>

<iframe src="<?php echo $base_url; ?><?php echo $page ?>" frameborder="0" width="100%" height="100%"></iframe>
工作正常,但我需要的是:

当用户尝试访问 我需要为我的switch语句获取此“contact”,并清除指向的url

模拟:

  • 请求
  • 获取参数“联系人”
  • 加载contact.php文件
  • 清除指向的url

  • 提前谢谢

    您可以使用

    RewriteRule ^contact$ /contact.php?params=contact [L,QSA]
    
    如果您将其添加到已有规则之前。但是你不能“清理”到
    http://www.mywebsite.com/
    ,从那时起,它将无法与
    site/index.php?params=home
    区分开来

    对于任何“联系人”页面,则:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILEMAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.+)$ /$1.php?params=$1 [L,QSA]
    
    您还需要确保
    Multiviews
    已关闭:

    Options Multiviews
    

    您只需要一个这样的通用规则:

    # To internally forward /anything to /anything.php?params=anything
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ /$1.php?params=$1 [L,QSA]
    
    你说的“清除URL”是什么意思

    因为如果您想传输contact参数,可以使用附加查询字符串(querystringappend)的QSA标志,但如果您只想清除URL,可以在contact.php中进行一些处理,然后使用php头函数重定向到主页面


    他在我键入答案时回答了我的问题,但我正要给你Jon Lin的代码

    你为什么需要第4步?哈哈Sry,删除了这一步。没问题,请参阅下面的一般答案,这应该可以解决你的问题。除了联系人之外还有其他URL,我删除了它以缩短代码。顺便说一句,我从htaccess中删除了4个步骤!Sry为此我这样做是因为今天当请求页面“”时,它工作正常,但是当用户单击“主页”链接时,网站被重定向到主页,但URL保持不变(因为iframe)
    # To internally forward /anything to /anything.php?params=anything
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ /$1.php?params=$1 [L,QSA]