我使用带有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>
我将禁用网站上的本地化/国际化插件,这会将网站上的每个网页的网址从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响应:< / p>
RewriteRule ^en/(.+)$ http://www.example.com/$1 [R=301]
如果我评论现有规则,我的规则就可以了。我还尝试在规则中添加条件,但这似乎也没有效果:
RewriteCond %{REQUEST_URI} =/en/*
答案 0 :(得分:1)
答案 1 :(得分:1)
除了sillygwailo建议的内容之外,我建议你确保你的RewriteCond(我认为需要)实际匹配..
来自apache docs:
= CondPattern'(按字典顺序排列)
将CondPattern视为普通字符串,并按字典顺序将其与TestString进行比较。如果TestString在词典上等于CondPattern(两个字符串完全相同,字符为字符),则为True。如果CondPattern是“”(两个引号),则将TestString与空字符串进行比较。
那么,它可能只匹配包含实际'*'的URL ...?不确定,但你也可以试试这个:
RewriteCond %{REQUEST_URI} ^/en/.*