2015-05-30 72 views
1

我使用WordPress重写规则向前URL在WordPress的

我想一个URL转发到另一个最好通过像add_rewrite_rule WordPress的(),但我知道这是不可能的。 (因为它会容易得多。)

我有,我想匹配同一规则少数情况下

我想转发

http://dom.com/sale/producthttp://dom.com/product

http://dom.com/sale/hierachicalproduct/producthttp://dom.com/hierachicalproduct/product

http://localhost/dom.com/sale/producthttp://localhost/dom.com/product

http://localhost/dom.com/sale/hierachicalproduct/producthttp://localhost/dom.com/hierachicalproduct/product

我想删除“/sale”其余部分会相同。

我不想为每个案例输入单个规则。

这是我使用,但问题是这样的代码转发像

http://localhost/dom.com/sale/producthttp://localhost/product 它跳过/dom.com

RewriteRule ^sale/(.+)$ /$1 [R=301,L] 
+0

检查此链接:http://stackoverflow.com/questions/28011358/htaccess-301-redirect-removing-part-of-url –

+0

@hardiksolanki这是一样的我的规则。它删除dom.com –

+0

你可以复制你的完整'.htaccess'代码吗? –

回答

1

这代码应该从本地主机上的http://localhost/dom.com/中的.htaccess和生产主机上的http://dom.com/中工作。

RewriteEngine On 

# get rewrite base dynamically 
RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$ 
RewriteRule ^.*$ - [E=BASE:%2] 

RewriteRule ^sale/(.+)$ %{ENV:BASE}$1 [R=301,L,NC] 

确保这些规则是RewriteEngine线以下的第一条规则。

+1

这太不可思议了。工作真棒。这对服务器来说花了多少钱?因为真的很努力。 –

+0

不,这是Apache Web服务器的非常简单的东西,没有额外的负载。 – anubhava

+1

谢谢你的努力。我很感激。 –

0

你需要把你的代码之后的代码RewriteEngine On

所以你的代码应该是

我可以参见编号RewriteBase /domain.com/此行之后下面的代码

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /domain.com/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /akasiayachting.com/index.php [L] 
</IfModule> 

只要把下面的代码.htaccess文件

RewriteRule ^/sale/(.+)$ /$1 [R=301,L] 
+0

这没有奏效。这里是我的永久链接结构,如果帮助http://localhost/dom.com/%postname% –

+0

@DenizPorsuk看到我的编辑。 –

+0

不幸的是,它不工作。这里是我的最后一个代码http://jsfiddle.net/axskqx3d/ –

0

你可以尝试使用两个捕获组:

RewriteRule ^(.*)sale/(.*)$ /$1$2 [NC,R=301,L] 
+0

不幸的是,这段代码还将http://localhost/dom.com/sale/product转发到http:// localhost/product –

+0

这很奇怪。 dom.com部分应该由第一组捕获。 – henrywright

+0

我试过@hardiksolanki建议也没有成功。 –