.htaccess动态到静态URL

时间:2012-02-22 20:21:36

标签: .htaccess

我正在尝试将动态网址设置为静态网址。 这是我现在拥有的典型网址: http://www.somedomain.com/design/index.php?p=about

我希望它是:http://www.somedomain.com/about

到目前为止,我已将它看起来像这样:http://www.somedomain.com/design/about.html

这是我正在使用的Rewriterule:RewriteRule ^([a-z]+).html$ index.php?p=$1 [L]

我如何修改它,看起来像这样:http://www.somedomain.com/about

感谢您的帮助! 非常感谢!

2 个答案:

答案 0 :(得分:0)

使用重写规则来提供“静态”URI 从不是一个好主意。

您可以使用其他一些想法:

  • 将'about'页面设为一个目录(文件夹),其中包含一个名为index.phpindex.html的文件。这样,网址会显示http://example.com/about/,您仍可以根据需要显示所需的信息。
  • 使用POST方法代替GET方法。这将显示为http://example.com/about.php注意:此后没有?或其他参数。
  • 利用这两种方法在页面转换时提供“无缝”URI。

答案 1 :(得分:0)

瑞克,你走在正确的轨道上。您需要阅读Apache重写文档。对于docroot/.htaccess启动它:

 RewriteEngine On
 RewriteBase   /

然后是规则的通用版本:

 Rewrite Rule ^(\w+)$     index.php?p=$1 [L]

这会将任何字串的请求重写为index.php。您需要注意,如果匹配发生,重写引擎会重新扫描.htaccess文件,因此您需要确保不创建循环。在这种情况下,替换字符串中包含“.”而模式没有,因此不会发生这种情况,但对于更复杂的情况,您可能需要使用一个或多个{保护'规则{ {1}}陈述。再次,阅读Apache文档。