2013-10-16 157 views
1

我创建了一个包含2个iframe的网站,第一个iframe有歌曲播放,第二个有网站。这里是我的index.php文件:获取URL参数并使用htaccess清理url使用htaccess

<?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. 获取PARAM '接触'
  3. 装入contact.php文件
  4. 清洁网址http://www.mywebsite.com

提前感谢!

+0

为什么你需要第4步? – anubhava

+0

哈哈Sry,删除了这一步。 –

+0

没有问题,请参阅下面的我的通用答案,这应该可以解决您的问题。 – anubhava

回答

2

如果添加,你可以做第3个步骤,

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 
+0

除联系人之外还有其他网址,我删除它以使代码简短。顺便说一句,我从htaccess中删除了4步! Sry那 –

+0

@HugoDias好吧,我已经添加了编辑 –

+0

谢谢@JonLin这解决了我的问题! –

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

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

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

他在我打字时回答我的答案,但我正要给你乔恩林的代码

+0

我这样做是因为今天当页面'http://www.mywebsite.com/contact'被请求时,它工作正常,但是当用户点击'home'链接时,网站被重定向到home,但是URL保持http://www.mywebsite.com/contact(因为iframe) –