Php 如何在codeigniter中通过传递博客id和博客标题生成seo友好的URL?

Php 如何在codeigniter中通过传递博客id和博客标题生成seo友好的URL?,php,.htaccess,codeigniter,routes,Php,.htaccess,Codeigniter,Routes,大家好,我正在使用codeigniter,我想知道如何为我的博客创建更好的url 就像我现在正在吃的东西 当前URL domain.com/article?seo=页内优化页外优化&id=6 所需URL domain.com/article/On-Page-Optimization-Off-Page-Optimization/6 我的routes.php文件是这样的 $route['default_controller'] = 'main'; $route['404_override'] = '

大家好,我正在使用codeigniter,我想知道如何为我的博客创建更好的url 就像我现在正在吃的东西

当前URL

domain.com/article?seo=页内优化页外优化&id=6

所需URL

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';
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] 
<a href="<?=base_url('index.php/main/article')?>?seo=article-name&id=123"> See Article </a>
我的Htaccess文件如下

$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';
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] 
<a href="<?=base_url('index.php/main/article')?>?seo=article-name&id=123"> See Article </a>
重新编写引擎打开
#从URL中删除/index.php/main/
重写cond%{REQUEST_METHOD}!邮递
RewriteCond%{THE_REQUEST}\s/+index\.php/main/[NC]
重写cond%{HTTP_HOST}^(?:www\)?(.+)$[NC]
重写规则^index\.php/main(/.*)?$https://%1$1[L,NC,NE,R=301]
重写cond%{HTTPS}关闭[或]
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写cond%{HTTP_HOST}^(?:www\)?(.+)$[NC]
重写规则^https://%1%{REQUEST_URI}[L,NE,R=301]
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^index.php[L]
标题集访问控制允许原点“*”
#删除index.php
重写cond%{REQUEST_METHOD}!邮递
RewriteCond%{THE_REQUEST}/index\.php[NC]
RewriteCond%{REQUEST_URI}^(.*/)index\.php$[NC]
重写规则^1[L,R=301,NE]
#拆除主管道
重写cond%{REQUEST_METHOD}!邮递
RewriteCond%{THE_REQUEST}/main[NC]
RewriteCond%{REQUEST_URI}^(.*/)main$[NC]
重写规则^1[L,R=301,NE]
#从外部将/dir/file.php重定向到/dir/file
重写cond%{REQUEST_METHOD}!邮递
RewriteCond%{THE_REQUEST}\s/+(.+?)\.php[\s?][NC]
重写规则^/%1[R=301,NE,L]
#将/dir/file内部转发到/dir/file.php
重写cond%{DOCUMENT_ROOT}/$1.php-f
重写规则^(+?)/?$$1.php[L]
标题集访问控制允许原点“*”
重新启动发动机
1美元^(索引\.php | resources | robots\.txt)
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php?/$1[L,QSA]
在这里,您可能会看到我正在使用htaccess和routes.php文件删除index.php和控制器名称(main.php)

请注意:

  • 控制器名称为Main.php(始终)
  • 函数名为article
当我像这样通过链接调用函数时

$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';
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] 
<a href="<?=base_url('index.php/main/article')?>?seo=article-name&id=123"> See Article </a>

我使用GET like
$id=$\u GET['id']
在article函数中访问文章,然后从数据库中获取所有数据

希望你能解决我的问题,帮我找到解决这个问题的办法

我相信我可以通过参数等,但我不知道。plz帮助