2015-02-11 27 views
1

我有几十个不同的页面。 每一页包含在一个类似的模式的两个链接 -重写一个url模式来调用相同的文件(.htaccess)?

例如:

fruits.php包含链接:

  1. /foo/fruits/abc
  2. /foo/fruits/xyz

magnets.php包含链接:

  1. /foo/magnets/abc
  2. /foo/magnets/xyz

目前我使用的是不同的.php文件来处理这些环节,所以我的.htaccess样子:

RewriteRule ^foo/fruits/abc/?$ /web/fruits1.php [L] 
RewriteRule ^foo/fruits/xyz/?$ /web/fruits2.php [L] 
RewriteRule ^foo/magnets/abc/?$ /web/magnets1.php [L] 
RewriteRule ^foo/magnets/xyz/?$ /web/magnets2.php [L] 

相反,我希望我的.hatccess调用相同的process.php文件来处理来自上述两种模式的所有这些链接,它们是:

/foo/(variable)/abc/ & /foo/(variable)/xyz/

回答

1

您可以使用正则表达式匹配,让你的URI动态值和刚才一个单一的规则您的要求:

RewriteRule ^foo/\w+/\w+/?$ /web/process.php [L,NC] 
+0

感谢,但 - 1.我不想在'/ web/$ 1.php'上的动态值 - 它应该总是'/ web/process.php' 2.我想在这里有一个动态值 - '^ foo /(value)/ abc /?$' '^ foo /(value)/ xyz /?$'(因为我无法预测我添加的名称是什么 - 磁铁和水果就是例子。 所以如果我拿你的例子,应该是这样的: '重写规则^ foo/\ w + /(abc | xyz)/?$ /web/process.php [L]'(为什么添加NC国旗btw?) – rockyraw 2015-02-11 11:10:33

+0

好吧试试我现在的更新规则 – anubhava 2015-02-11 13:40:35

+1

谢谢,它的工作原理。我应该使用NC旗帜吗?目前我只使用L标志并且工作正常 – rockyraw 2015-02-11 14:01:22