.htaccess重写规则更改动态网址

时间:2013-01-09 12:05:57

标签: apache .htaccess mod-rewrite url-rewriting

我正在努力使网站更适合我的网站用于搜索引擎优化目的。

目前页面显示如下:

SITE/[number]-[page name].html

我想让页面以下面的格式显示。

example 1.
SITE/[page name].html 

example 2.
SITE/[page name]-[number].html 

(如果可能的话,我希望保留页码,例如1,但是如果必须包含它,我希望它在网址的末尾,就像上面的第二个例子一样。)

我在.htaccess文件中有以下规则。

RewriteRule ^([0-9]+)-(.*)$ site_page.php?page=$1

我最大的问题是我已经尝试了很多方法来重写以完成我需要的工作。 在重写方面,我是一个完整的新手。

我已经将重写改为以下内容而没有任何快乐。

RewriteRule ^(.*)-([0-9]+)$ site_page.php?page=$1
RewriteRule ^(.*)-([0-9])$ site_page.php?page=$1
RewriteRule ^(.*+)-([0-9]+)$ site_page.php?page=$1
RewriteRule ^([.*]+)-([0-9]+)$ site_page.php?page=$1

上面我尝试过的是保留页面ID号,我最好完全放弃这些数字。

我在setting.php文件中有以下行,用于控制网站如何创建相关链接。并按照我的意愿显示它们。但我收到404错误,因为我认为重写规则没有显示我期望它显示的内容。

// non seo url
$setup_url['normal']['resource']     = "$url_base/site_page.php?page=[number]"; 

// seo url
$setup_url['seo']['resource']    = "$url_base/[number]-[name].html";

我看过很多关于mod重写规则的文章,似乎没有在哪里。任何帮助将不胜感激。

非常感谢。 标记

1 个答案:

答案 0 :(得分:1)

似乎您忘记了规则中的.html扩展名。

RewriteRule ^(.+)-(\d+)\.html$ site_page.php?$1=$2 [L]