我正在使用wordpress
我想将一个网址转发到另一个网址,最好是通过wordpress,如add_rewrite_rule(),但我知道这是不可能的。 (因为它会容易得多。)
我几乎没有想要与相同规则相匹配的案例
我想转发
http://dom.com/sale/product至http://dom.com/product
http://dom.com/sale/hierachicalproduct/product至http://dom.com/hierachicalproduct/product
http://localhost/dom.com/sale/product至http://localhost/dom.com/product
http://localhost/dom.com/sale/hierachicalproduct/product至http://localhost/dom.com/hierachicalproduct/product
我想删除" / sale "休息将是一样的。
我不想为每个案例键入单一规则。
这是我使用的代码,但问题是此代码转发如
http://localhost/dom.com/sale/product至http://localhost/product 它正在跳过 /dom.com 方面
RewriteRule ^sale/(.+)$ /$1 [R=301,L]
答案 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]