我认为我在这里误解了一些基本的东西,因为这是我第一次使用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
肯定在做某事,而不是我想要的。
我已经通过this post浏览了相关内容,但我认为问题更多的是由于缺乏经验而遗漏了一些微妙的事实。有人会指出我的错误吗?我知道我们不需要另外一个mod_rewrite
问题,但我真的在努力解决这个问题。提前谢谢。
答案 0 :(得分:1)
试试这个:
RewriteEngine On
RewriteCond %{HTTP_HOST} =blog.example.com [NC]
RewriteRule ^/?(index\.php)?$ http://www.example.com/blog [QSA,R,L]
一些基本要点:
重写规则的第二部分不是正则表达式,因此句点不需要在那里进行转义。
我不熟悉RewriteCond的= String选项。谢谢你今天教给我一些东西(当我没有在那里看到正则表达式时我很担心,但那应该没问题)!我会在这里添加[NC],因为它有助于匹配域的小写和大写版本。
除非您的虚拟主机将blog.example.com子域包含为正确的别名,并且为该子域设置了DNS,否则这些都不会起作用。