我已经搜索了这个问题并环顾四周,但似乎无法在实践中使用它。这是我的.htaccess文件:
Options +FollowSymLinks
RewriteEngine on
RewriteRule /poker/(.*)/(.*)/$ /poker/?$1=$2
我想让我的网页像这样工作:
mysite.com/poker/page/home
但这只是不起作用,我已经使用了3个不同的生成器,并尝试从教程中手动输入它,但它只是返回404.任何想法都非常感激,它可能非常明显..
由于
答案 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
也许可以进行分组(.+)
,以便在那里至少有一个角色。