0

我想我在这里误解了一些基本的东西,因为这是我第一次使用mod_rewrite.

我想要以下内容:

blog.example.com
blog.example.com/
blog.example.com/index.php

重定向到:

example.com/blog

但是,我希望所有其他情况都不做任何事情,例如

blog.example.com/foobar
blog.example.com/wp-admin
blog.example.com/wp-admin.php

这是我当前的 .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} =blog.example.com
RewriteCond %{REQUEST_URI} ^|/|index\.php$
RewriteRule ^(.*)$ http://www\.example\.com/blog [QSA,L]

我尝试了许多变体,但每次要么所有请求都重定向,要么没有重定向,所以mod_rewrite肯定是在做某事,只是不是我想要的。

我已经浏览了这篇文章以了解任何相关的内容,但我认为问题更多在于我由于缺乏经验而遗漏了一些微妙的事实。有人会指出我的错误吗?我知道我们不需要mod_rewrite关于 SO 的另一个问题,但我真的在这个问题上苦苦挣扎。提前致谢。

4

1 回答 1

1

试试这个:

RewriteEngine On
RewriteCond %{HTTP_HOST} =blog.example.com [NC]
RewriteRule ^/?(index\.php)?$ http://www.example.com/blog [QSA,R,L]

一些基本点:

  1. 重写规则的第二部分不是正则表达式,因此不需要在此处转义句点。

  2. 我不熟悉 RewriteCond 的 =String 选项。谢谢你今天教我一些东西(当我在那里没有看到正则表达式时我很担心,但这应该没问题)!我会在此处添加 [NC],因为它有助于匹配您的域的小写和大写版本。

  3. 除非您的虚拟主机包含 blog.example.com 子域作为正确的别名,并且为该子域设置了 DNS,否则这些都不起作用。

于 2012-10-08T15:36:40.353 回答