【发布时间】:2023-04-07 09:27:02
【问题描述】:
您好,我是 CI 新手,我被困在某个地方。
我想要的是我有像
这样的网址domain.com/article?seo=What-Software-Program&id=7
这里我通过最后的 id 来获取文章 我正在使用 seo 在 url 中使用与 thsse 相关的关键字以获得更好的 SEO
现在我想要从那个 url 看起来像这样
domain.com/article/What-Software-Program/id/7
我想从网址中删除 ?seo= 并将其替换为 /
我已成功配置我的路由页面以在没有 index.php 和主控制器的情况下路由 url
这是我的路线页面
$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$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]
# 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]
编辑
我有这样的网址 domain.com/article?seo=What-Software-Program&id=7 但是 这个 url 是在我删除我的默认控制器名称和 index.php 之后的
原始 url 是 domain.com/index.php/main/article?seo=What-Software-Program&id=7 其中 main 是控制器名称 article 是函数名称
我通过 route.php 文件删除了 index.php 和 main,现在我想将 SEO 的内容正确地放在 url 中。
【问题讨论】:
-
make
$config['enable_query_strings'] = FALSE;,CI 默认跟随domain.com/article/What-Software-Program/id/7 -
它不起作用。我认为你没有得到全部的想法。我有这样的网址 domain.com/article?seo=What-Software-Program&id=7 但是这个网址是在我删除我的默认控制器名称和 index.php 之后,原始网址是 domain.com/index.php/main/ article?seo=What-Software-Program&id=7 其中 main 是控制器名称 article 是函数名称
-
你需要这样的网址吗? domain.com/article/What-Software-Program/id/7
-
是的,你是对的!
标签: php .htaccess codeigniter