使用 htaccess 创建 SEO 友好的 url

Posted

技术标签:

【中文标题】使用 htaccess 创建 SEO 友好的 url【英文标题】:Creating SEO friendly urls using htaccess 【发布时间】:2014-12-04 19:11:09 【问题描述】:

我正在尝试重写网站的 url,我应该提到 index.php 现在的工作方式是获取 p(页面)参数并包含适当的文件。

所以请求页面是这样的:

www.domain.com/index.php?p=home
www.domain.com/index.php?p=search
www.domain.com/index.php?p=profile
www.domain.com/index.php?p=contact

我找到了如何为此创建重写规则:

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?p=$1

所以现在 www.domain.com/home 会给我主页

但我还需要为此提供一个友好的网址

www.domain.com/index.php?p=profile&id=20

to

www.domain.com/profile/20/profile-friendly-name

or better

www.domain.com/profile/profile-friendly-name

*profile-friendly-name 指的是公司名称

要求:

    为所有页面设置友好的 url,例如/home, /联系方式

    为个人资料页面设置一个特别友好的 url 网址中的个人资料名称

我的问题:

    如何使用现有 url 格式 (index.php?p=profile&id=20) 向 url 添加配置文件友好名称?

    我能不能只有一个唯一的名字(没有 id),就像我上次一样 例如?

    如果我能做到这一点,我是否必须更改所有现有的 url 在网站内(链接、图片的网址、文件)到友好的 格式?

    我注意到在应用第一个 RewriteRule 后,一些 css 样式表和 js 不包括在内。怎么了?

【问题讨论】:

最好不要在一篇文章中问太多问题 您应该查看 MVC 框架而不是 htaccess 以获得 SEO 友好的网址。 是的,我知道@anubhava,但我很困惑...... 我不能使用 MVC,我现在不能改变网站的结构,因为它是一个大项目 你从哪里得到/profile-friendly-name 【参考方案1】:
RewriteRule ^profile/([0-9]+)/([A-Za-z0-9-]+)/?$ index.php?p=profile&id=$1

应该为:

www.domain.com/index.php?p=profile&id=20

to

www.domain.com/profile/20/profile-friendly-name

【讨论】:

所以我只是将配置文件的名称回显到链接的 url(在 id 之后)并且只使用 id 来获取配置文件信息? 添加规则后,www.domain.com/profile//profile-friendly-name 格式的所有 url 都应该可以使用... 这是一个非常有用的解决方案。【参考方案2】:

例 1: https://example.com/books.php?bookName=php 使用 htaccess url 会这样写 https://example.com/php

您可以使用.htaccess 文件中给出的以下代码来执行此操作:

RewriteEngine On
RewriteRule ^([^/\.]+)/?$ books.php?bookName=$1

前 2 :

https://example.com/books.php?bookName=php&&chapter=array 使用 htaccess url 会这样写 https://example.com/php/array

您可以使用下面给出的.htaccess 文件中的代码获取:

RewriteEngine On
RewriteRule ^([^/\.]+)/([^/\.]+)?$ books.php?bookName=$1&chapter=$2

【讨论】:

以上是关于使用 htaccess 创建 SEO 友好的 url的主要内容,如果未能解决你的问题,请参考以下文章

重定向 seo 友好的 URL (htaccess)

htaccess url 重新样式化图像 url 到 seo 友好

htaccess 重写和重定向 SEO 友好的 URL

Mod_rewrite 结合 SEO 友好的 url 和 CDN

Yii2 301 从原始 url 重定向到 .htaccess 中对 SEO 友好的 url 不起作用,需要其他解决方案

使用 .htaccess 获取友好的 url