草庐IT

php - 基于类别名称的 SEO URL 在 URL 中没有类别 ID

coder 2024-02-28 原文

我有两个表 posts & categories

post_id | post_title  | post_content   | post_cat
--------------------------------------------------
1         Hello World  welcome to my..   1
.         ..           ..                ..

类别

cat_id | cat_name | cat_parent
-----------------------------
1        News       NULL
2        Sports     1
.        ...        .. 

假设新闻的当前类别链接是 http://domain.com/category/1/

MySQL 语句

SELECT posts.post_id,
       posts.post_id,
       posts.post_title,
       posts.post_content,
       posts.post_cat,
       categories.cat_id,
       categories.cat_name,
       categories.cat_parent
FROM   posts
       INNER JOIN categories
         ON posts.post_cat = categories.cat_id  
       WHERE posts.post_cat = (int)$_GET['cat_id']

所以我们可以得到 post_cat = 1

的结果

根据我当前的数据库结构,如何删除 ID 但将其更改为一个不错的 slug?例子:-

Main category - http://domain.com/category/news/
Sub category  - http://domain.com/category/news/sports/

让我知道脚本如何告诉 News 等于 post_cat 列上的 1

最佳答案

您可以使用 .htaccess filerewrite the URL's给你。

.htaccess 中的条目文件看起来像这样:

RewriteEngine on
RewriteCond $1 ^category 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ parseCategoryUrl.php?q=$1 [L,QSA]

我将在这里分解行以帮助理解发生了什么以及每行的含义:

  1. 打开 RewriteEngine。
  2. 此重写只会发生在主机名后第一个单词为 category 的 URL 上- 所有以该词开头的 URL 都将由以下行处理。
  3. 该规则将排除 指向实际 文件的 URL !-f
  4. 该规则将排除 指向实际 目录的URL !-d
  5. 实际规则将捕获整个 request_uri 并将其传递给 parseCategoryUrl.php将整个请求作为参数的文件称为 q (查询)在 $_GET 数组中。规则末尾的标志 (L,QSA) 做两件事。
    • L - 这是最后一条规则。处理此行后 .htaccess文件将停止对当前 URL 执行操作。
    • QSA - 将查询字符串附加到重写的 URL(以便我们稍后可以解析它)。

你的 parseCategoryUrl.php文件可能包含类似于以下内容的内容:

$request = explode('/',$_GET['q'] );
array_shift($request);

第一行将通过斜杠将请求拆分为一个数组 - 第二行从数组的开头删除单词类别(因为我们知道我们正在解析类别 URL)。

决赛$request数组,带有 URL 示例,例如: http://example.domain.com/category/news/sports
将是这样的:

Array
(
    [0] => news
    [1] => sports
)

所以你在这里看到你现在已经成功地将 URL 拆分为一个数组;您现在要做的就是查询您的数据库并为用户提供正确的页面。
因为parseCategoryUrl.php页面实际上没有输出,你可以使用 include()函数根据提供的 URL 插入正确的页面。


SEO 旨在使您的网页及其 URL 为搜索引擎提供更多信息,以便搜索 Internet 的用户能够收到与其搜索查询相关的网页结果。查看 URL 的搜索引擎: http://domain.com/category/1/2 将无法提取太多信息。但是,如果您的 URL 包含(如您的问题所要求的)类别信息,则搜索引擎将能够推断出特定 URL 与以下内容相关:

  • http://domain.com/category/news/ - 新闻
  • http://domain.com/category/news/sports - 体育新闻
  • http://domain.com/category/blog/ - 博客
  • 等...

关于php - 基于类别名称的 SEO URL 在 URL 中没有类别 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546635/

有关php - 基于类别名称的 SEO URL 在 URL 中没有类别 ID的更多相关文章

  1. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  2. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  3. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  4. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  5. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  6. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  7. 没有类的 Ruby 方法? - 2

    大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow

  8. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

  9. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  10. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

随机推荐