我有一个名为fb的目录和一个名为like.php的脚本。我想使用mod_rewrite将get-id传递给like-file。
mypage.com/fb/like.php?id=5 将 mypage.com/fb/like/5
我的(不工作)htaccess看起来像这样:
RewriteEngine on
RewriteRule /fb/like/([0-9]+) /fb/like.php?id=$1
有人看到这里有什么问题吗?
答案 0 :(得分:0)
尝试在匹配开始时删除斜杠并替换类似的模式:
RewriteRule fb/like/([0-9]+) fb/like.php?id=$1
mypage.com/
是域名,因此匹配的字符串为fb/like/5
还可以考虑在匹配字符串开头使用克拉,使其与fb
匹配,但不匹配fffb
:
RewriteRule ^fb/like/([0-9]+) fb/like.php?id=$1
这是mod_rewrite的 short guide ,我发现它很有帮助。
修改后续问题:
要匹配mypage.com/something/fb/like/5,您可以执行以下操作:
RewriteRule ^([^/]+)/fb/like/([0-9]+) $1/fb/like.php?id=$2
这会将第一个目录保存为$ 1。 [^/]+
表示匹配一个不是斜杠的一个或多个字符。将此.htaccess文件放在域的根目录中。
或者,您可以使用倒数第二个规则并将该.htaccess文件放在“something”子目录中。希望这是有道理的。
或者你可以编写一个简单地匹配like.php/([0-9]+)
的规则,这样无论目录路径是什么样子它都能正常工作。您可以更加通用,并将其应用于任何PHP文件,而不仅仅是like.php
。这实际上取决于您希望您的网站如何运作。