让我的mod_rewrite规则运行出现问题

时间:2013-05-08 17:49:17

标签: php .htaccess mod-rewrite

我一直在尝试多种变体来让我的服务器重定向 - 但似乎都失败了。 :(

这是我的网址:

"meaty-monster-bikes.zz-reviews.com/monster-bikes/p1c9.html" 

现在我想要在变量中收集的数据是

之后的部分
"meaty-monster-bikes.zz-reviews.com/" 

所以在这种情况下我想要“怪物自行车”和“p1c9”

然后使用收集的变量,服务器可以重定向到:

"zz-reviews.com/index.php?p=1&c=9&k=monster-bikes" 

我已经在我的 .htaccess 文件中提出了这个问题:

Options +SymLinksifOwnerMatch
RewriteEngine On

RewriteRule ^[\.0-9-a-z]+/([-a-z]+)/p([0-9]+)pg([0-9]+)\.html$ index.php?p=$2&c=$3&k=$1 [NC,QSA,L]

我也尝试过:

RewriteCond %{HTTP_HOST} ^[.+].zz-reviews.com/([-a-z]+)/[.+]$ [NC]

RewriteRule ^[\.0-9,:\/-a-z]+p([0-9]+)c([0-9]+)\.html$ index.php?p=$1&c=$2&k=%1 [NC,QSA,L]

据我所知,两者都应该有效, 但两者都没有。

这是网页:

http://zz-reviews.com/index.php?p=1&c=9&k=monster-bikes

如果您点击“Monster Bikes”类别

你会看到这个网址:

http://meaty-monster-bikes.zz-reviews.com/monster-bikes/p1c9.html

htaccess未正确重定向。

任何人都可以看到我的错误吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

RewriteRule ^([^./]+)/([a-z]+)(\d+)([a-z]+)(\d+)\.html$ index.php?$2=$3&$4=$5&k=$1 [L,NC]

这是您需要的规则 - 当您转到网址时

  

meaty-monster-bikes.zz-reviews.com/monster-bikes/p1c9.html

您将(在幕后)重定向到此网址

  

meaty-monster-bikes.zz-reviews.com/index.php?p=1&c=9&k=monster-bikes

<强>释

^([^./]+) - 在com之后开始第一个arg($1)取出所有字符,直到/ - 这将采用字符串“monster-bikes”

/ - 网址的/字符

([a-z]+) - 按照abc字母(如果有其他严格的话你可以更改)这将采用“p”($2

(\d+) - 按数字跟随 - 这将取“1”($3

([a-z]+) - 按abc字母说明 - 这将采用“c”($4

(\d+) - 按号码跟随 - 这将取“9”($5

\.html$ - 以字符串“.html”结尾

使用汇编的参数将其重定向到index.php:

index.php?$2=$3&$4=$5&k=$1 = index.php?p=1&c=9&k=monster-bikes