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>. 或者你呢?