【问题标题】:How to rewrite a URL in PHP Codeigniter如何在 PHP Codeigniter 中重写 URL
【发布时间】: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


【解决方案1】:
For this type of url : domain.com/article/What-Software-Program/id/7

请在 routes.php 文件中添加以下路由。

$route['article/(:any)/id/(:num)'] = "controller_name/function_name/$1/$2";

【讨论】:

  • 我添加了这个 $route['article/(:any)/id/(:num)'] = "main/article/$1/$2";
  • 我认为您的 htaccess 文件有问题。
  • 我删除了 .htaccess 文件进行检查,但仍然有效。对不起
猜你喜欢
  • 2016-02-17
  • 2015-09-02
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2011-09-23
  • 1970-01-01
相关资源
最近更新 更多