我最近移动了主机托管服务商,但是我对目录进行了一些更改。我将文件夹从“列表”重命名为“供应商”。我在下面使用此代码来防止404错误。
RewriteEngine On
RewriteRule ^listing/(.*) vendors/$1
这对我没有用。我该怎么做才能解决此问题?
旧网址:
http://www.oldsite.com/curacao/listing/chinese-culture-club/
新网址:
http://www.newsite.com/curacao/vendors/chinese-culture-club/
这是完整的.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule . index.php [L]
RewriteRule ^listing/(.*) vendors/$1
# BEGIN WPSuperCache
# END WPSuperCache
# BEGIN WordPress
# END WordPress
RewriteRule ^listing/(.*) vendors/$1
这似乎比注释中所涵盖的更多错误。首先,示例URL的主机/域已更改,但这未在此伪指令中反映出来。或者是否oldsite.com
和和newsite.com
托管在同一位置(我认为是)。另外,您发布的内容是内部重写,但您可能需要外部重定向才能正确解析404(否则最终将获得本质上重复的内容)。
在现有内部重写之前,请尝试以下操作,位于.htaccess
文件顶部。通常,外部重定向应该始终在内部重写之前进行:
RewriteCond %{HTTP_HOST} ^(www\.)?oldsite\.com [NC]
RewriteRule ^(curacao)/listing/(.*) http://www.newsite.com/$1/vendors/$2 [R=302,L]
您只需要一个RewriteEngine
指令,最好在文件顶部。(它可以在任何地方,但顶部更合乎逻辑。)
的$1
是反向引用在第一捕获组RewriteRule
模式,这是在这种情况下,只是“库拉索”,但它避免重复。$ 2是对第二个捕获组的后向引用,就像以前一样。
该R
标志表示外部重定向(替换中的绝对URL也可能会触发外部重定向,但默认为302)。在L
(last
)保证没有进一步的mod_rewrite指令是该过程期间处理。
如果这是永久重定向,则将302
(临时)更改为301
(永久)。301缓存在浏览器中,因此可能会使测试出现问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句