RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.com:8082/wordpress\\
The
HTTP_HOST
服务器变量包含
Host
HTTP请求标头-这不包括URL路径(即。
/wordpress/
). 但为什么还要加反斜杠呢(
\\
) 在结尾,而不是(正)斜杠(
/
)? 那只是一个拼写错误吗?(尽管您也将其贯彻到了下面的示例中?)
RewriteRule ([a-z0-9-]+)/? http://$1.example.com [R=301,NC,L]
不太清楚这背后的想法是什么,但该指令假设
blog
存在于请求的URL路径中,但不在您的示例中?而且,除非您有多个子域重定向,否则似乎不需要一般化的匹配和替换?
我还想问,为什么需要检查请求是否映射到目录或文件的条件。通过检查它是否未映射到目录,它将不会重定向/wordpress/
(假设这是一个物理目录)。
重定向www.example.com:8082/wordpress/
到blog.example.com
如您的示例(单个URL重定向)所示,您需要在根目录的顶部执行以下操作.htaccess
文件:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.com:8082
RewriteRule ^wordpress/$ http://blog.example.com/ [R=301,NC,L]
如果
.htaccess
文件位于
/wordpress
子目录,然后更改
RewriteRule
图案读取
^$
而不是
^wordpress/$
如果example.com:8082
和blog.example.com
指向文件系统的不同区域,然后可以删除该条件(RewriteCond
指令)。
不需要<IfModule>
包装器或RewriteBase
此处为指令。
尽管我很惊讶你不想批量重定向所有的子URL,但我还是觉得很奇怪?即重定向www.example.com:8082/wordpress/<something>
到blog.mydomain.com/<something>
. 或者你呢?