URL重写以删除参数

时间:2011-02-05 23:15:10

标签: php apache .htaccess mod-rewrite


我正在一个网站上,其中所有页面实际上是index.php +一个被分析的'name'参数 并加载适当的模板和内容 主页网址是:
http://www.some_site.com/?page=homepage

1。我被要求将主页网址“更改”为:
http://www.some_site.com
我可以使用网址重写和htaccess,如果是这样,我应该在那里写什么?

在我的本地机器上工作,我尝试了这段代码(启用了模式重写):

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule /index.php /index.php?page=homepage
</IfModule>

我仍然需要'name'参数可供php代码使用,所以我可以加载 模板和css文件。

2。从其他页面(不是主页)转换(例如)很好 的 http://www.some_site.com/?page=products
于:
http://www.some_site.com/products
这不太重要。

提前并且度过愉快的一天: - )

2 个答案:

答案 0 :(得分:3)

根本不需要重写规则。只需更改index.php文件,以便在根本没有页面变量时显示主页。

if (!isset($_GET['page'])) {
    $_GET['page'] = 'homepage';
}

出于教育目的,重写规则:

RewriteRule /$ index.php?page=homepage [L]

也就是说,匹配的URI只是斜杠(URI在URL中的域之后开始)。 $表示斜杠后不应有任何字符。

对于产品等,假设单个单词仅由字母组成:

RewriteRule /([a-zA-Z]+)$ index.php?page=$1 [L]

答案 1 :(得分:1)

以下应该是您正在寻找的(对于您的第二个,不太重要的问题)。把它放在你的.htaccess - 文件中:

RewriteEngine On
RewriteRule ^/([a-zA-z0-9-_]+)/?$ index.php?page=$1