简单而整洁.htaccess重定向帮助需要

时间:2011-07-20 00:48:32

标签: .htaccess url mod-rewrite redirect

这是一个奇怪的......

前段时间我设法编写了一个.htaccess重定向,该网址的读取方式如下:www.website.com/mt?page=index - 该网页的真实网址是www.website.com/PageParser.php?file=index.php

问题在于我的webhost的FTP系统隐藏了.htaccess文件,即使它们被允许并且可以操作 - 所以我已经检查了我的.htaccess文件的本地副本,并且没有任何代码至于这是如何工作的 - 我忘了我是怎么做的!!

基本上,我使用通配符,以便mt?page=之后的任何内容实际显示PageParser.php?file=但没有在网址中显示PageParser.php(这是重要的一点,因为我的网站root上的index.php实际上是先通过PageParser.php发送的,这样在最终用户看到它之前就不会有任何内容被删除了 - 所以.htaccess如何重定向/重写URL /mt?page=的任何链接都显示位于/PageParser.php?file=的文件而不更改用户看到的网址?

2 个答案:

答案 0 :(得分:0)

RewriteEngine On
RewriteRule ^(.*)mt?page=(.*)$ $1PageParser.php?file=$2

答案 1 :(得分:0)

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^page=([^&]+)
RewriteRule ^mt$ /PageParser.php?file=%1.php [NC,L]
  1. 此规则会在不更改浏览器中的网址的情况下将/mt?page=hello的{​​{1}}重写(内部重定向)请求改为/PageParser.php?file=hello.php

  2. 您的源网址示例(www.website.com/mt?page=index)有index,而目标网址(www.website.com/PageParser.php?file=index.php)有index.php。上述规则会将.php添加到页面名称值,因此,如果您请求/mt?page=hello.php,则会将其重命名为/PageParser.php?file=hello.php.php

    如果您的网址示例中存在拼写错误且page值应按原样传递,请从重写规则中删除.php位。

  3. 即使存在其他一些参数(例如/mt?page=hello&name=Pinky),该规则也能正常工作,但这些额外的参数不会传递给重写的URL。如果需要 - 添加QSA标志以重写规则。

  4. 此规则将放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些小的调整。

  5. <强> P.S。 更好地写下没有解释(我知道它/我之前做过......但现在我忘了我是怎么做的)而不是这些“借口”。虽然它可能是100%真实,但它听起来并不那么好。