【问题标题】:Mod_rewrite how to remove URI segmentMod_rewrite 如何删除 URI 段
【发布时间】:2011-08-25 18:20:02
【问题描述】:

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

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]

有什么建议吗?

【问题讨论】:

  • 您想合并这两个规则,或者您在.htaccess 中的内容只是您建议的工作的初步尝试?

标签: apache codeigniter mod-rewrite


【解决方案1】:

您可以使用 CodeIgniter 的内置路由来做到这一点。在您的 routes.php 配置文件中尝试这样的操作。

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

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

【讨论】:

    【解决方案2】:

    如果您只想删除 page_load 部分,您可以这样做:

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

    如果你想合并两个规则,我建议你首先使用REQUEST_URI作为RewriteCond变量(而不是$1,这取决于RewriteRule),如果可能的话,还指定正面案例而不是负面案例的条件(最好不要使用!作为条件)。我认为这种方式更易于维护。

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      相关资源
      最近更新 更多