Mod_rewrite如何删除URI段

时间:2011-08-25 18:20:02

标签: apache codeigniter mod-rewrite

我的网页上有多种语言。以下是链接示例:

http://myweb.com/en/page_load/about_us
http://myweb.com/en/page_load/testing

http://myweb.com/de/page_load/about_us
http://myweb.com/de/page_load/testing

我想让它更短:

http://myweb.com/en/about_us
http://myweb.com/en/testing

http://myweb.com/de/about_us
http://myweb.com/de/testing

目前我的.htaccess文件中有这个:

RewriteEngine On
RewriteCond $1 !^(index\.php|images|public|css|blogg|img|captcha|robots\.txt|sitemap.xml|resources)
RewriteRule ^(.*)$ /index.php/$1 [L]

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以使用CodeIgniter的内置路由执行此操作。在routes.php配置文件中尝试这样的操作。

$route['en/page_load/:any'] = "en/$1";
$route['de/page_load/:any'] = "de/$1";

这应该可以满足您的需求。

答案 1 :(得分:0)

如果您只想删除page_load部分,则可以执行以下操作:

RewriteRule ^(.*)/page_load/(.*)$ $1/$2 [L]

如果您要合并这两个规则,我建议您先使用REQUEST_URI作为RewriteCond变量(而不是$1,这取决于RewriteRule),并且,如果可能的话,还要指定积极案例的条件而不是否定案例(不喜欢使用!条件)。我认为这种方式更易于维护。