获取URL参数并使用htaccess清理URL

时间:2013-10-16 13:42:36

标签: php .htaccess redirect iframe

我创建了一个有2个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>

这是我的.htaccess

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ site/index.php?params=$1

它工作正常,但我需要的是:

当用户尝试访问http://www.mywebsite.com/contact时 我需要为我的switch语句获取此“联系人”并将网址清除为http://www.mywebsite.com

模拟:

  1. 请求http://www.mywebsite.com/contact
  2. 获取param'contact'
  3. 加载contact.php文件
  4. 将网址清理为http://www.mywebsite.com
  5. 提前致谢!

3 个答案:

答案 0 :(得分:2)

您可以使用

执行前3个步骤
RewriteRule ^contact$ /contact.php?params=contact [L,QSA]

如果您在已有规则之前添加它。但你不能清洁&#34; http://www.mywebsite.com/的网址,从那时起它将与site/index.php?params=home无法区分。

对于任何&#34;联系人&#34;页面,然后:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILEMAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php?params=$1 [L,QSA]

您还希望确保Multiviews已关闭:

Options Multiviews

答案 1 :(得分:1)

您只需要一个通用规则:

# 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]

答案 2 :(得分:0)

“清除http://www.mywebsite.com的网址”是什么意思?

因为如果要传输联系参数,可以使用附加查询字符串的QSA标志(查询字符串追加),但如果您只想清理URL,可以在contact.php中进行一些处理,然后重定向到main带有PHP标头功能的页面。

他在我输入答案时回答,但我准备给你Jon Lin的代码