我正试图在Apache服务器上使用以下.htaccess将服务器上的路径重定向到子域:
Redirect 301 /shop test.foobar.com/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
然后我重新启动Apache服务,但重定向被忽略。我错过了什么
您应该尽量避免在同一上下文中混合mod_rewrite(RewriteRule
(和mod_alias(Redirect
(指令。Mod_rewrite将首先执行,而不管.htaccess
中指令的明显顺序如何。
但是,您的Redirect
指令完全无效(目标URL中缺少协议(-这不应该被"忽略"?事实上,我希望这会导致服务器出现500内部服务器错误-"重定向到非URL"!?
请尝试以下操作:
RewriteEngine On
RewriteRule ^shop$ https://test.foobar.com/ [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
在测试之前,您需要清除浏览器缓存,因为任何错误的301(永久(重定向都将被浏览器缓存。
只有当你确定它工作正常时,才能将其更改为301。
然后我重新启动我的Apache服务。。。
如果只更改.htaccess
,则无需重新启动Apache。