作为参考代码,需自己修改,不一定能成功
参考说明1:
如何隐藏使用.htaccess从URL获取参数?我不想改变GET到POST但我比较喜欢添加.htaccess到其中的页面位于从如何通过在目录中添加.htacess来隐藏URL中的参数
我想这个网址隐藏参数,一个名为XXX,但它不会改变任何东西
RewriteEngine on
RewriteRule ts125/xxx/(.*) imdetail.php?sid=$1
RewriteRule ts125/xxx/(.*) imdetail.php?sid=$1=$1
RewriteRule ts125/xxx/(.*) imdetail.php?sid=$1
隐藏'.php'后面的所有参数,我想这样显示'www.example.com/ts125/xxx/imdetail.php
您的htaccess位于/ xxx文件夹中吗?
您可以使用下面的规则/ts125/xxx/.htaccess
RewriteEngine on
RewriteBase /ts125/xxx
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ imdetail.php?sid=$1 [NC,L]
这将内部重定向
site.com/ts125/xxx/foobar
到
site.com/ts125/xxx/imdetail.php?sid=foobar
参考说明2:
利用.htaccess隐藏html和php后缀
假设有个网页http://www.example.com/index.html或者http://www.example.com/index.php。如果我们想要隐藏.html后缀或者.php后缀,那么就可以利用到.htaccess文件。由于Apache和Nginx的.htaccess语法不同,这里提供2种方法。
首先新建名为.htaccess文件,windows下新建方法为输入.htaccess.就会变成.htaccess。
一、Apache
1. 隐藏.html后缀
在.htaccess文件输入如下语句:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
2. 隐藏.php后缀
在.htaccess文件输入如下语句:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
二、Nginx
1. 隐藏.html后缀
在.htaccess文件输入如下语句:
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/([^\.]+)$ /$1.html last;
}
2. 隐藏.php后缀
在.htaccess文件输入如下语句:
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/([^\.]+)$ /$1.php last;
}
参考说明3
如何在url中隐藏参数,但将其发送到隐藏的页面,在地址栏中不可见
示例:
我有这个:
http://localhost/index.php?sent=true
我要:
http://localhost/index.php
您只需设置它,以便如果您在?sent=true
脚本完成后访问它,它就会重定向用户。
例如:
if(!empty($_GET['sent'])&&$_GET['sent']) {
//do stuff
header("Location: http://localhost/index.php");
}
您不能使用htaccess执行此操作,因为您需要传递给PHP,它是在重定向之后传递给PHP的,因此如果使用htaccess重定向,则值将永远不会到达PHP。
进一步的问题是,这样做的唯一方法是用javascript表单重定向用户。
<?php if(!empty($_GET['sent'])&&$_GET['sent']) { ?>
<form action='http://localhost/index.php' method='post' name='frm'>
<?php
foreach ($_GET as $a => $b) {
echo "<input type='hidden' name='".$a."' value='".$b."'>";
}
?>
</form>
<script language="JavaScript">
document.frm.submit();
</script>
<?php } ?>
SetEnvIf Request_URI "\sent=true$" SENT=1
然后在PHP中检索它,如:
if (isset($_SERVER['SENT'])) {
echo "Received sent variable from apache, value is " . $_SERVER['SENT'];
} else {
echo "not received sent variable from apache";
}
更新
您需要将AllowOverride FileInfo
或AllowOverride ALL
设置在httpd.conf文件或.htaccess文件中,如下面的示例所示:
<Directory /home>
AllowOverride FileInfo
</Directory>