htaccess 中的重定向是将目录添加到新 URL;未正确重定向 ExpressionEngine URL
我正在尝试为新的 ExpressionEngine 站点设置重定向规则。
我正在使用放置在我网站的 .htaccess
文件中的以下代码(后一部分是 从 ExpressionEngine 的 URL 中删除 index.php - 这有效):
<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch 301 ^/2010/example/*$ http://sub.domain.com/new-page/$1
# 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]
</IfModule>
发生了某种重定向,但我得到的 URL 是这样的:
http://sub.domain.com/new-page2010/example/
我已经尝试过不同的组合,它让我抓狂!关于我哪里出错的任何提示?
I'm trying to setup a redirect rule for a new ExpressionEngine site.
I'm using the following code placed in my site's .htaccess
file (the latter section is to remove index.php from ExpressionEngine's URLs - this works):
<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch 301 ^/2010/example/*$ http://sub.domain.com/new-page/$1
# 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]
</IfModule>
A redirect of sort happens, but the URL I get is this:
http://sub.domain.com/new-page2010/example/
I've tried different combinations and it's driving me up the wall!! Any tips on where I'm going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Apache 的 RedirectMatch 指令 的语法要求在正则表达式:
使用RedirectMatch相当于重定向,但使用标准正则表达式,而不是简单的前缀匹配。
因此,纠正您的示例,有效的 RedirectMatch 指令将是:
您可以通过使用 RewriteRule 相反:
根据您想要重定向的内容(单个页面还是整个子目录),您可能需要修改每个页面中的原始 URL 路径 例子。
The syntax for Apache's RedirectMatch Directive expects the use of parenthesis in the RegEx:
Using a RedirectMatch is equivalent to Redirect, but makes use of standard regular expressions, instead of simple prefix matching.
Therefore correcting your example, a valid RedirectMatch Directive would be:
You can tap in the full power of Apache's rewrite engine by using a RewriteRule instead:
Depending on what you're wanting to redirect — a single page vs. entire sub-directory — you may need to modify the original URL path in each example.