[英]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
模拟:
提前致谢!
您可以执行前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.