我想改变网址 的 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>
有人能帮助我吗?
答案 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