繁体   English   中英

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

[英]Get URL paramters and clean the url using htaccess

我创建了一个有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. 得到参与'联系'
  3. 加载contact.php文件
  4. 将网址清理为http://www.mywebsite.com

提前致谢!

您可以执行前3个步骤

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

如果你在你已经拥有的规则之前添加它。 但是你不能“清理”到http://www.mywebsite.com/的URL,因为那时它与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]

你是什​​么意思“清理网址到http://www.mywebsite.com ”?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM