我有这个.htaccess
RewriteEngine On
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z]+) index.php?category=$2&language=$1&id=$3
RewriteCond %{HTTP_USER_AGENT} libwww [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)=http [NC]
RewriteRule ^(.*)$ – [F,L]
Options +FollowSymLinks
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
我想要实现的是传递所有变量,但似乎我不能这样做。 我是.htaccess的新东西,所以代码可能是无稽之谈。但是,我设法传递了类别和语言,但可以传递id。
由于
答案 0 :(得分:1)
这将有助于研究Perl正则表达式,这是RegEx样式.htaccess使用的。链接至:Apache docs,RegEx info。
即,对于您的第一个RewriteRule,您只有两个子组(括号部分),因此$3
总是会产生空的 - 而$1
和$2
将匹配相应的从左到右的有序群体。这里有一个如何匹配给你的RewriteRule的3个子组的样本:
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z]+)/([0-9]+) index.php?category=$2&language=$1&id=$3
注意匹配一个或多个数字的第三个括号部分 - 匹配的部分将被替换为$3
反向引用,有效地将数字id
放在您想要的位置。
答案 1 :(得分:1)
您可以拥有2个单独的第一个没有ID的规则,另一个具有ID:
RewriteRule ^([\da-z]+)/([\da-z]+)/(\d+)/?$ index.php?category=$2&language=$1&id=$3 [L,QSA,NC]
RewriteRule ^([\da-z]+)/([\da-z]+)/?$ index.php?category=$2&language=$1 [L,QSA,NC]
答案 2 :(得分:0)
如果您的ID是数字,请使用以下规则:
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z]+)/(\d+) index.php?category=$2&language=$1&id=$3
答案 3 :(得分:0)
试试这个
RewriteRule ^index/([^/]*)/([^/]*)/([0-9]+)$ index.php?language=$1&category=$2&id=$3 [L]