1

我正在创建一个有 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>

这是我的 .htaccess

RewriteEngine On

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

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

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

模拟:

  1. 请求http://www.mywebsite.com/contact
  2. 获取参数“联系人”
  3. 加载contact.php文件
  4. 将 URL 清理为http://www.mywebsite.com

提前致谢!

4

3 回答 3

2

您可以执行前 3 个步骤

RewriteRule ^contact$ /contact.php?params=contact [L,QSA]

如果您在已有的规则之前添加它。但是你不能“清理”到 的 URL 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
于 2013-10-16T13:47:15.320 回答
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]
于 2013-10-16T13:52:37.627 回答
0

“清理http://www.mywebsite.com的 URL”是什么意思?

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

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

于 2013-10-16T13:55:15.923 回答