301使用.htaccess和Apache重定向

时间:2018-11-06 21:19:42

标签: apache .htaccess

我正在尝试使用Apache服务器上的以下.htaccess将服务器上的路径重定向到子域:

Redirect 301 /shop test.foobar.com/

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^ index.php [L]
</IfModule>

然后我重新启动Apache服务,但是重定向被忽略。我想念什么

1 个答案:

答案 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。