我有这个由Wordpress和电子商务插件生成的.htaccess文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^.products/images/(\d+)/?\??(.*)$ /wp-content/plugins/shopp/core/image.php?siid=$1&$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我现在必须将访问http://mydomain.com/golf的人重定向到http://mydomain.com/products/category/golf/
我将这些规则放在现有块上方的一个块中,即半工作:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^golf.*$ products/category/golf/ [R=permanent,L]
RewriteRule ^cycling.*$ products/category/cycling/ [R=permanent,L]
#...etc
</IfModule>
问题是,如果有人输入http://mydomain.com/golfshoes,它仍会重定向。我试图玩通配符等,但不能让它只允许/高尔夫和/ golf /
另外......这是设置这些规则的最有效方法吗?我应该做某种if或if或者然后重定向?
谢谢:) 本
答案 0 :(得分:2)
尝试将2个正则表达式更改为:
RewriteRule ^golf(/.*)?$ products/category/golf/$1 [R=permanent,L]
RewriteRule ^cycling(/.*)?$ products/category/cycling/$1 [R=permanent,L]
(/.*)匹配&#34; /&#34;或&#34; /某事物&#34;,?表示它可能不在那里。目标处的 $ 1 表示括号中匹配的内容。因此,前往http://mydomain.com/golf/foo.html的人将获得/prodducts/category/golf/foo.html