如何使用 .htaccess 隐藏网页名称后的所有内容

Posted

技术标签:

【中文标题】如何使用 .htaccess 隐藏网页名称后的所有内容【英文标题】:How to hide everything after your webpage name with .htaccess 【发布时间】:2013-03-12 04:18:11 【问题描述】:

当我进入我的站点和浏览其他站点时,我得到一个参数more:etc .php?p=pagename&id=1

我想隐藏 .dk 之后的所有内容

我试过了:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ index.php?p=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?p=$1 [L,QSA]

RewriteRule ^/index.php$ http://www.madsweb.dk/ [R,NC,L]

但它似乎不起作用。

谁能帮帮我?

【问题讨论】:

我认为您无法隐藏 URL 的那部分。除非您通过 POST 或 cookie 进行导航并忽略所有 URL。 【参考方案1】:

重写规则 ^/index.php$ http://www.madsweb.dk/ [R,NC,L]

重写工作反过来。您不会重写用户在其地址栏中看到的内容,而是将请求重写为另一个请求(如重定向,但在服务器上透明处理)。

这也是你在那里尝试做的事情不可能的原因。

如果您喜欢 90 年代并且不关心可用性,您可以使用框架。

但笑话不谈,最好建立在这条规则的基础上,这已经很好了:

重写规则 ^([a-zA-Z0-9]+)$ index.php?p=$1 [L,QSA]

并将附加信息(在这种情况下为id)获取到模式中。示例:

RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)$ index.php?p=$1&id=$2 [L,QSA]

或更通用(但仍然只有一个参数):

RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([0-9]+)$ index.php?p=$1&$2=$3 [L,QSA]

【讨论】:

【参考方案2】:

我想隐藏 .dk 之后的所有内容

这是不可能的。 mod_rewrite 无法消除对每个资源都有唯一 URL 的需要。

(如果你确实做到了,那么它会破坏链接,包括书签和搜索引擎)。

【讨论】:

【参考方案3】:

嘻嘻 试试

$pathInfo = explode('/', trim($_SERVER['PATH_INFO'], '/')); $pagina = $pathInfo[0]; $actie = $pathInfo[1];重写规则 ^([a-zA-Z0-9]+)/?$ index.php?p=$1 [L,QSA] RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)$ index.php?p=$1&id=$2 [L,QSA]

或更通用(但仍然只有一个参数):

RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([0-9]+)$ index.php?p=$1&$2=$3 [L,QSA]

list($pagina, $actie) = explode('/', trim($_SERVER['PATH_INFO'], '/'));

你也可以试试:

选项 +FollowSymLinks RewriteEngine On 重写规则 ^folder1/(.*)$ /关联。 com/folder2/$1 [R=301,L]

【讨论】:

以上是关于如何使用 .htaccess 隐藏网页名称后的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用VBA单击网页上的按钮(名称隐藏)?

如何使用 htaccess 从 url 中删除文件夹名称

如何使用 .htaccess 隐藏 .php URL 扩展名?

隐藏域是干啥东东 有啥作用 为啥有的网页上经常用到 如何使用

c ++如何获得系统所有窗口名称 包括隐藏窗口

如何在.htaccess中隐藏.php扩展名[重复]