麻烦与htaccess mod_rewrite和目录

时间:2012-07-24 12:14:00

标签: .htaccess mod-rewrite

我已经阅读过几十篇关于类似问题的帖子,但我无法理解这一点。

我的网站上有SEO友好网址,看起来像这样......

http://www.website.com/tequila/bottle-name.html
http://www.website.com/whiskey/bottle-name.html
http://www.website.com/vodka/bottle-name.html

...其中bottle-name是瓶子的实际名称。

我正在为PHP处理程序执行mod_rewrite以实际传递页面。每个处理程序都位于每个目录中(龙舌兰酒,伏特加,威士忌)。

第一个(龙舌兰酒)正在运作,但其他两个不是,我无法弄清楚原因。

这是我现在拥有的mod_rewrite代码......

#Rewrite seo urls
RewriteCond %{REQUEST_URI} !^/tequila/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ index.php?liquor=$1&liquor-type=tequila [L]

RewriteCond %{REQUEST_URI} !^/whiskey/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ index.php?liquor=$1&liquor-type=whiskey [L]

RewriteCond %{REQUEST_URI} !^/vodka/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ index.php?liquor=$1&liquor-type=vodka [L]

似乎正在发生的事情是威士忌和伏特加页面被龙舌兰酒mod_rewrite捕捉和处理(猜测因为它在这里是第一个)。

因此,http://www.website.com/vodka/vodka-bottle.html实际上被重写为http://www.website.com/tequila/index.php?liquor=vodka-bottle.html&liquor-type=tequila

好像我没有设置RewriteCond%{REQUEST_URI}!^ / tequila /正确吗?

非常感谢任何人提供的任何帮助或指示!

1 个答案:

答案 0 :(得分:1)

为什么要否定^/tequila/? !会导致所有其他酒类型的匹配,而不是您列出的那种。