自从我使用 Apache 已经很长时间了(很长一段时间),即便如此,我并没有真正做太多的 URL 重写或类似的事情,只是简单的托管。但现在我正在尝试为重新命名为新域的小型企业拼凑一个简单的重定向。
它的设置方式是旧域的主机有一个基于 Web 控制面板的重定向到特定 URL,这是“寻找旧的我们?” 新域上的页面。所有请求都会被重定向,但它们会携带整个请求路径,这会在新站点上导致 404。
我一直在查看一些 Apache 文档和一些我可以在网上找到的示例,但我还没有完全做到。到目前为止我离开的地方是这样的:
RewriteCond %{REQUEST_URI} .*looking-for-blah.* [NC]
RewriteRule ^ http://newsite.com/looking-for-blah [L,R=301]
这个想法是,任何对looking-for-blah
包含http://newsite.com/looking-for-blah
. 因此,当旧主机将某人重定向到:
http://newsite.com/looking-for-blah/foo/baz
他们被新站点重定向到:
http://newsite.com/looking-for-blah
但是,它似乎没有捕获传入的请求并重定向它们。我是否遗漏了一些基本概念RewriteCond
?也许有更好的方法来做到这一点,我什至没有考虑过?
编辑:这是整个 .htaccess 的当前状态:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN custom redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule looking-for-icamp http://empow.me/looking-for-icamp [L,R=301]
</IfModule>
# END icamp redirect
但是做一个简单wget
的http://empow.me/looking-for-icamp/foo
结果是 404 而不是所需的 301。