重写规则将一个URL转发给另一个wordpress

时间:2015-05-30 09:12:53

标签: regex wordpress .htaccess mod-rewrite url-rewriting

我正在使用wordpress

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

我几乎没有想要与相同规则相匹配的案例

我想转发

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]

3 个答案:

答案 0 :(得分:1)

此代码应该来自localhost上的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)

您需要将代码放在RewriteEngine On

之后

所以你的代码应该是

我可以在代码

下面看到你的.htaccess文件
<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>

RewriteBase /domain.com/这一行

之后放下以下代码
RewriteRule ^/sale/(.+)$ /$1 [R=301,L]

答案 2 :(得分:0)

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

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