Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 在httpd.conf中使用重写规则_Apache_Mod Rewrite_Rewrite_Httpd.conf - Fatal编程技术网

Apache 在httpd.conf中使用重写规则

Apache 在httpd.conf中使用重写规则,apache,mod-rewrite,rewrite,httpd.conf,Apache,Mod Rewrite,Rewrite,Httpd.conf,每次有人访问www.cars.com/parts,我都希望他们被重定向到www.planes.com。之后,路径是相同的。例如,www.cars.com/parts/engine应该转到www.planes.com/engine,www.cars.com/parts/wheels应该转到www.planes.com/wheels等等。截至目前,我的httpd.conf文件中有以下内容: RewriteEngine on ServerName www.cars.com DocumentRoo

每次有人访问www.cars.com/parts,我都希望他们被重定向到www.planes.com。之后,路径是相同的。例如,www.cars.com/parts/engine应该转到www.planes.com/engine,www.cars.com/parts/wheels应该转到www.planes.com/wheels等等。截至目前,我的httpd.conf文件中有以下内容:

 RewriteEngine on
 ServerName www.cars.com
 DocumentRoot /var/www/htdocs
 RewriteCond %{HTTP_HOST} www.cars.com/parts$ [NC]
 RewriteRule ^/(.*)$ www.planes.com$1 [R=301,L]
然而,问题是www.cars.com/parts把我带到了www.planes.com/parts,而不是www.planes.com。
非常感谢您的帮助。

尝试将重写规则更改为:

 RewriteRule ^/parts(.*)$ www.planes.com$1 [R=301,L]

用括号中检测到的模式替换$1。所以现在它应该在/parts之后追加所有内容。

看起来它现在在/parts之后追加了所有内容。谢谢我现在唯一的问题是,当我去www.cars.com时,它会把我带到planes.com。如果我去www.cars.com,它仍然会把我带到cars.com的主页,而不是planes.com的主页。请尝试重写cond%{HTTP_HOST}^www\.cars\.com/parts$[NC]反斜杠到底起什么作用?它仍然把我带到错误的主页。如果我直接访问汽车主页,是否必须包含另一条重写规则,该规则将忽略任何重写规则?在正则表达式中,点(.)表示匹配任何字符。使用反斜杠指示解析器将其视为字符点。HTTP_主机不包含完整URI,因此请尝试使用REQUEST_URI变量:RewriteCond%{REQUEST_URI}^/parts(.*)$[NC]