Wordpress .htaccess可为前面带有前缀路径的特定页面提供服务
我需要提供以下页面: /类别/* 作为 /店铺/类别/* 我需要url在Wordpress .htaccess可为前面带有前缀路径的特定页面提供服务,wordpress,apache,.htaccess,permalinks,Wordpress,Apache,.htaccess,Permalinks,我需要提供以下页面: /类别/* 作为 /店铺/类别/* 我需要url在/category/前面有/shop,它还需要处理category中的所有嵌套路径结构 如何通过.htaccess进行此操作 还有一个/shop/页面,我不想被任何.htaccess编辑所干扰 因此,我只需要为/category/页面提供url为/shop/category/的服务,这可以通过.htaccess实现吗 因此,我是.htaccess重写的初学者,但我尝试过: RewriteCond %{HTTP_HOST} ^
/category/
前面有/shop
,它还需要处理category中的所有嵌套路径结构
如何通过.htaccess进行此操作
还有一个/shop/
页面,我不想被任何.htaccess编辑所干扰
因此,我只需要为/category/
页面提供url为/shop/category/
的服务,这可以通过.htaccess实现吗
因此,我是.htaccess重写的初学者,但我尝试过:
RewriteCond %{HTTP_HOST} ^category/$
RewriteRule ^shop/category/(.*)$ category/$1 [L]
RewriteCond %{HTTP_HOST} ^category/(.*)
RewriteRule ^$ /shop/category/$1? [R,L]
它不做任何事情,但是
我也试过:
RewriteCond %{HTTP_HOST} ^category/$
RewriteRule ^shop/category/(.*)$ category/$1 [L]
RewriteCond %{HTTP_HOST} ^category/(.*)
RewriteRule ^$ /shop/category/$1? [R,L]
同样,对任何事情都没有影响
我正在使用Wordpress,所以它似乎对我的重写规则有一定的影响力,也许??无论如何,这是我的整个.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
RewriteRule ^shop/category/(.*)$ category/$1 [R,L]
运气不好
好吧,看来我可能会有进展
以下add\u rewrite\u规则
仅匹配第一个类别,但不匹配子类别:
add_rewrite_rule('shop/category/?([^/]*)', 'index.php?product_category=$matches[1]', 'top');
我使用的自定义分类法是product\u category
,而不是wordpress defaultcategory
,因为我不希望我的产品类别与帖子类别混合。所以,我现在只需要弄清楚如何匹配所有路径(包括子类别),例如:
/category/gelest inc/硅烷硅酮/
硅烷硅酮是gelest inc.的子公司,如何在上面的重写规则中也捕捉到这一点?您的规则说,如果HTTP_主机是分类/,则将主页(^$匹配空uri,例如:/)重写为/shop/catagory。您的重写条件永远不会满足,因为您正在使用模式中的URI与HTTP_主机头进行匹配 如果要重定向/分类/到/商店/分类,可以使用
RewriteEngine on
RewriteRule ^catagory/([^/]*)/?$ /shop/catagory/$1 [L,R]
你有WordPress规则,规则之后是“商店”规则 当商店URI不是真实的文件或目录时,对它的请求将已经由WordPress规则处理并重写为
index.php
。Apache然后使用index.php
进行第二次迭代,但它与商店规则不匹配,并且从不重定向或重写
要做到这一点,首先必须遵守商店规则
RewriteRule ^shop/category/(.*)$ category/$1 [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
现在,这取决于您想要实现什么,从
RewriteRule ^shop/category/(.*)$ category/$1 [R,L]
或前往商店/品类
RewriteRule ^category/(.*)$ shop/category/$1 [R,L]
如果我正确理解了您的问题,以下.htaccess应满足您的要求:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^category(?:/.*)?$ /shop/$0 [R=301,NC,NE,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#开始WordPress
重新启动发动机
重写基/
重写规则^category(?:/.*)$/shop/$0[R=301,北卡罗来纳州,东北州,北卡罗来纳州]
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
谢谢,我在这里尝试过你的方法,但它根本不起作用,它没有任何效果:重写规则^shop/category/([^/]*)/?$/category/$1[L]
例如,当我输入时:http://localhost/category/gelest-inc/
它应该将浏览器中的url更改为:http://localhost/shop/category/gelest-inc/
它没有:(好的,这是正确地重定向到/shop/category/*
,但是它需要从/category/*
加载内容,所以当它现在正在更改url结构时,它给了我一个404,而不是从/category/*
加载内容。我们可以更改url,但仍然从/category/
加载内容吗?)?仅仅从.htaccess是不可能的,因为这是Wirdpress.WP使用它自己的重写API。使用该API,您需要在主题的function.php
文件中添加一个简单的规则。我查看了一下这个,以及add_rewrite_规则
,但我仍然不确定如何在wordpress中执行此操作……您能提供一个示例吗ps?提供了一个示例,说明我正在wordpress中尝试使用的不工作的code>规则
中的function custom\u rewrite\u basic(){add\u rewrite\u rule('^shop/(category/)、“$matches[1]”、'bottom');}/code>然后在下一行add\u action('init',custom\u rewrite\u basic');