我正在尝试使用Apache服务器上的以下.htaccess将服务器上的路径重定向到子域:
Redirect 301 /shop test.foobar.com/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
然后我重新启动Apache服务,但是重定向被忽略。我想念什么
答案 0 :(得分:1)
您应尽量避免在同一上下文中混合使用mod_rewrite(RewriteRule
)和mod_alias(Redirect
)指令。尽管指令在.htaccess
中有明显的顺序,Mod_rewrite将首先执行。
但是,您的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。