使用.htaccess设置URL目录样式的样式

时间:2012-08-13 14:46:01

标签: .htaccess

我已经搜索了这个问题并环顾四周,但似乎无法在实践中使用它。这是我的.htaccess文件:

Options +FollowSymLinks
RewriteEngine on
RewriteRule /poker/(.*)/(.*)/$ /poker/?$1=$2

我想让我的网页像这样工作:

mysite.com/poker/page/home

但这只是不起作用,我已经使用了3个不同的生成器,并尝试从教程中手动输入它,但它只是返回404.任何想法都非常感激,它可能非常明显..

由于

2 个答案:

答案 0 :(得分:0)

您的示例中没有尾部斜杠,但您的规则需要一个斜杠。您可以将尾部斜杠设为可选:

RewriteEngine on
RewriteRule /poker/(.*)/(.*)/?$ /poker/?$1=$2

但请注意,uri /poker/a/b/c/d/e/f/g/也匹配到此处 - a/b/c/d/e/f将匹配第一个子模式,而g将匹配第二个子模式,因为(.*)是贪婪的。如果您希望仅匹配斜杠之间的内容,则更具体 - 例如([^/]*)

答案 1 :(得分:0)

好吧,如果http://mysite.com/poker/?page=home正确解析,你的规则确实没有错。唯一的问题是,如果这是在htaccess文件中,当在RewriteRule中匹配时,会从URI中删除前导斜杠,因此您需要将其从正则表达式中删除(或者将其作为可选项):

RewriteRule ^poker/(.+)/(.+)/?$ /poker/?$1=$2

也许可以进行分组(.+),以便在那里至少有一个角色。