2012-02-22 169 views
0

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

我想它是:http://www.somedomain.com/about

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

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

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

感谢您的任何/所有帮助! 非常感谢!

回答

0

使用重写规则给'静态'URI是从来没有一个好主意。

一些其他的想法,你可以使用:

  • 充分利用“关于”页面目录(文件夹)与文件名为index.php或者它index.html。这样,URL显示http://example.com/about/,并且您希望的信息仍可以根据需要显示。
  • 使用POST方法而不是GET方法。这将显示为http://example.com/about.php注意:没有?或其后的参数
  • 利用这两种方法在页面转换时给出'无缝'URI。
+0

我目前的index.php从其他目录和数据库动态加载信息。所以,为每个页面使用不同的文件夹可能不适合我的情况。 – Rick 2012-02-22 20:41:53

+0

PenguinCoder,你可能不认为这是一个好主意,但它是非常普遍的做法,随着“SEO优化”URI的发展趋势越来越明显。这不是一个主流的观点,所以最好能够用“在我看来”这样的条件来表达这样的清单:-) – TerryE 2012-02-22 23:46:25

0

瑞克,你走在正确的轨道上。您需要阅读Apache重写文档。

RewriteEngine On 
RewriteBase /

您的规则。然后通用版本:为了您的docroot/.htaccess启动它

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

这将改写这是单词串到index.php任何请求。您需要知道,如果匹配发生,重写引擎会重新扫描.htaccess文件,因此您需要确保不会创建循环。在这种情况下,替换字符串中有一个“.”,并且该模式没有,所以这不会发生,但是对于更复杂的情况,您可能需要用一个或多个RewriteCond语句“守护”规则。再次阅读Apache文档。