php - 如何通过传递博客 ID 和博客标题在 codeigniter 中生成 seo 友好的 URL?
问题描述
大家好,我正在使用codeigniter,我想知道如何为我的博客创建一个更好的网址,就像我现在拥有的一样
当前网址
domain.com/article?seo=On-Page-Optimization-Off-Page-Optimization&id=6
所需网址
domain.com/article/On-Page-Optimization-Off-Page-Optimization/6
我的routes.php 文件是这样的
$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['sitemap\.xml'] = "Sitemap/index";
$route['(:any)'] = "main/$1";
$route['admin'] = 'admin/login';
我的Htaccess文件是这样的
RewriteEngine On
# remove /index.php/main/ from URLs
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+index\.php/main/ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^index\.php/main(/.*)?$ https://%1$1 [L,NC,NE,R=301]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
Header set Access-Control-Allow-Origin "*"
</IfModule>
# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]
# remove main
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /main [NC]
RewriteCond %{REQUEST_URI} ^(.*/)main$ [NC]
RewriteRule ^ %1 [L,R=301,NE]
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
Header set Access-Control-Allow-Origin "*"
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
在这里,您可能会看到我正在使用 htaccess 和 routes.php 文件删除我的 index.php 和控制器名称 (main.php)。
请注意:
- 控制器名称为 Main.php(始终)
- 函数名称是文章
当我通过这样的链接调用函数时
<a href="<?=base_url('index.php/main/article')?>?seo=article-name&id=123"> See Article </a>
我通过使用 GET 访问文章功能中的文章$id=$_GET['id']
,然后从数据库中获取所有数据。
希望您能解决我的问题,并可以帮助我找到解决此问题的方法。
我确定我可以传递参数等,但我不知道。请帮助
解决方案
推荐阅读
- javascript - findOne 返回 null 但它不应该返回 (mongoDB)
- java - 类层次结构爆炸式增长
- php - JQuery 日历默认星期从星期一开始
- ruby-on-rails - Rails 6.0.2 ActionMailer 问题:找不到模板
- c# - 如何在openXml中找到最后一段的页行位置?(在最后一段之后的最后一页的word文档中可用多少空间)
- go - 如何列出网络中的所有 IP
- android - 如何使微调器中的 int 值显示为微调器内 UI 中的文本值?
- loops - Ansible:提取路径循环查找
- regex - 限制单词中的字符序列重复
- javascript - 根据 React Hooks 中父组件的不同变化,改变子组件的不同 props?