CodeIgniter htaccess从URL中删除查询字符串

时间:2016-05-02 18:18:42

标签: .htaccess codeigniter codeigniter-3

我想改变网址 的 mysite.com/page?id=s3q4afas 至 使用htaccess mysite.com/page/s3q4afas

到目前为止我所拥有的:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]


RewriteBase /
RewriteCond %{QUERY_STRING} ^id=([^&]*) [NC]
RewriteRule ^ %{REQUEST_URI}page/%1 [R,L]
</IfModule>

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下.htaccess:

<IfModule mod_rewrite.c>


    RewriteEngine on
    ##1)Redirect "/page/?id=foo" to "/page/foo"##
    RewriteCond %{THE_REQUEST} /page/?\?id=([^\s]+) [NC]
    RewriteRule ^ /page/%1? [L,R]
    ##2)internally redirect "/page/foo" to "/page/?id=foo"##
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^page/([^/]+)/?$ /page/?id=$1 [NC,L]
    ##3)rewrite any other non-existent request to "index.php"##
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$1 [PT,L]
</IfModule>

答案 1 :(得分:0)

您不需要为此更改.htaccess文件。默认情况下,CodeIgniter的网址会被细分,除非您有意将enable_query_strings配置选项设置为TRUE

  

默认,CodeIgniter中的网址设计为搜索引擎和人性化。 CodeIgniter使用基于段的方法,而不是使用与动态系统同义的URL的标准“查询字符串”方法:

example.com/news/article/my_article

参见:codeigniter.com/user_guide/general/urls.html

  

启用查询字符串

     

在某些情况下,您可能更喜欢使用查询字符串网址:

index.php?c=products&m=view&id=345
  

CodeIgniter 可选 支持此功能,可以在application/config.php文件中启用此功能。如果您打开配置文件,您将看到以下项目:

$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
  

如果您将enable_query_strings更改为TRUE,此功能将变为有效状态。然后,您可以使用您设置的“触发”字来访问您的控制器和函数,以调用您的控制器和方法:

index.php?c=controller&m=method