【发布时间】:2010-12-01 22:52:33
【问题描述】:
我使用带有 Apache 和 mod_rewrite 模块的干净 URL 安装了 Drupal 5.23。我正在使用 .htaccess 文件来实现具有以下配置的干净 URL 功能:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
我将禁用网站上的本地化/国际化插件,这会将网站上每个页面的 URL 从 http://www.example.com/en/url-to-a-page 更改为 http://www.example.com/url-to-a-page(/en 部分将被删除)。
我想添加一个 mod_rewrite 规则,以便为 URL 中带有 /en 部分的任何传入 URL 提供 HTTP 301 重定向响应,以便将它们定向到正确的页面。
我尝试在我的.htaccess 文件的现有规则上方和下方添加以下行,但在这两种情况下,访问带有/en 的页面都会导致 HTTP 404 Not Found 响应:
RewriteRule ^en/(.+)$ http://www.example.com/$1 [R=301]
如果我注释掉现有规则,我的规则就可以正常工作。我也尝试在规则中添加条件,但这似乎也没有效果:
RewriteCond %{REQUEST_URI} =/en/*
【问题讨论】:
标签: apache drupal mod-rewrite