需要通过mod_rewrite获得SEO友好URLS的指导

时间:2012-03-12 18:02:05

标签: php html .htaccess mod-rewrite seo

我一直很难让它真正发挥作用。所以我使用的CMS通过自己的管理工具使用“漂亮的URL”,因此生成的.htaccess文件已经预先提供了重写条件。现在这可行,但它仅适用于CMS生成的页面,它们是index.php的扩展。例如,index.php?id=maps很好地显示为www.siteurl.com/maps/而不是www.siteurl.com/index.php?id=maps

现在我的问题是我有大约1900多个产品页面是从查询字符串生成的。

例如,我的页面网址看起来像:

https://www.siteurl.com/item.php?id=0012345&pg=author-title

理想情况下,我希望网址为:

https://www.siteurl.com/0012345/author-title.html

我已经尝试了一些mod_rewrite生成器来给我正确的语法,但到目前为止还没有任何工作。

目前在我的.htaccess文件中是预先存在的语言:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]

我把它改成了这样的东西:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA]
RewriteRule ^([^/]*)/([^/]*)\.html$ /item.php?id=$1&pg=$2 [QSA,L]

但它不起作用。我刚收到一个404页面。请告诉我我哪里错了。感谢。

1 个答案:

答案 0 :(得分:0)

尝试用index.php替换/index.php。

什么样的反直觉是您需要Apache服务器配置中的前导斜杠,但必须在htaccess中省略它。