首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用.htaccess重写文件夹

无法用.htaccess重写文件夹
EN

Stack Overflow用户
提问于 2017-01-10 14:03:05
回答 1查看 202关注 0票数 1

我最近搬家了,但我在目录上做了一点小小的改动。我将文件夹从“列表”重命名为“供应商”。我使用下面的代码来防止404错误。

代码语言:javascript
复制
RewriteEngine On
RewriteRule ^listing/(.*) vendors/$1

这对我没用。我能做些什么来解决这个问题?

旧URL:

代码语言:javascript
复制
http://www.oldsite.com/curacao/listing/chinese-culture-club/

新URL:

代码语言:javascript
复制
http://www.newsite.com/curacao/vendors/chinese-culture-club/

这是完整的.htaccess

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-10 15:13:23

RewriteRule ^listing/(.*)供应商/1美元

这一点似乎比评论中所述的更有问题。首先,示例URL更改了主机/域,但这个指令没有反映这一点。或者oldsite.comnewsite.com是否托管在同一个地方(我想是的)。另外,您发布的内容是内部重写,但您可能需要外部重定向才能正确地解决404 (否则,您将得到本质上重复的内容)。

在您现有的内部重写之前,在.htaccess文件的顶部尝试以下操作。通常情况下,外部重定向应该总是在内部重写之前。

代码语言:javascript
复制
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系统由浏览器缓存,因此可能会导致测试问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41570697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档