使用 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/例 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的主要内容,如果未能解决你的问题,请参考以下文章
htaccess url 重新样式化图像 url 到 seo 友好
Mod_rewrite 结合 SEO 友好的 url 和 CDN
Yii2 301 从原始 url 重定向到 .htaccess 中对 SEO 友好的 url 不起作用,需要其他解决方案