表达引擎内置重定向?

时间:2013-01-22 03:18:52

标签: .htaccess redirect expressionengine

我刚刚在Expression Engine中重建了一个网站,一切都很顺利!我需要创建一系列重定向,以便从以前的站点修复一些旧的URL。

示例:

旧网站创建的网址如下:index.php?id = 30

例如,这个需要被重定向到:http://www.example.com/contact

所以在我创建的.htaccess中:

重定向/index.php?id=30 http://www.example.com/contact

我为所有不同的ID做了大约50次。但是,当我转到这些链接时,他们只是将我放在主页上并保留URL的原样。 (www.example.com/index.php?id=30)。

然后我注意到它为任何不存在的URL执行此操作。所以我可以输入:

www.example.com/asdasdjasdbjhasdbjhasdbjhasdbjhasdbjhasd

它只是把我放在主页上。

以下是我的.htaccess文件中的其他内容以及一些重定向示例。第一位只是从URL中删除了/index.php。

        RewriteEngine On

    # Removes index.php from ExpressionEngine URLs
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]

Redirect /index.php?id=30 http://www.example.com/contact

Redirect /index.php?id=26 http://example.com/careers

Redirect /index.php?id=28 http://example.com/about

那么这里发生了什么,Expression Engine是否内置了重定向,这些重定向会破坏我的重定向?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您无法与Redirect语句中的查询字符串匹配,您需要使用RewriteCond并与%{QUERY_STRING}变量匹配。确保在表达引擎规则之前 添加这些规则:

RewriteCond %{QUERY_STRING} ^id=30
RewriteRule ^/?index.php$ http://www.example.com/contact [L,R]
RewriteCond %{QUERY_STRING} ^id=26
RewriteRule ^/?index.php$ http://www.example.com/careers [L,R]
RewriteCond %{QUERY_STRING} ^id=28
RewriteRule ^/?index.php$ http://www.example.com/about [L,R]