我最近搬家了,但我在目录上做了一点小小的改动。我将文件夹从“列表”重命名为“供应商”。我使用下面的代码来防止404错误。
RewriteEngine On
RewriteRule ^listing/(.*) vendors/$1这对我没用。我能做些什么来解决这个问题?
旧URL:
http://www.oldsite.com/curacao/listing/chinese-culture-club/新URL:
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发布于 2017-01-10 15:13:23
RewriteRule ^listing/(.*)供应商/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模式中第一个捕获组的反向引用,在本例中它只是"curacao“,但它避免了重复。$2是对第二个捕获组的反向引用,就像以前一样。
R标志表示外部重定向(替换中的绝对URL也可能触发外部重定向,但默认为302)。L (last)确保在此传递过程中不再处理进一步的mod_rewrite指令。
如果这应该是永久重定向,那么将302 (临时)更改为301 (永久)。301系统由浏览器缓存,因此可能会导致测试问题。
https://stackoverflow.com/questions/41570697
复制相似问题