所以,如果我有以下网址:htaccess的删除.php然后重写URL发出
www.mydomain.com/parser.php?id=19127axbj1
我如何使用htcaccess,使其作为
www.mydomain.com/19127axbj1
这可能吗?我看运球有http://drbl.in/caYS
,所以想知道这样的事情。
所以,如果我有以下网址:htaccess的删除.php然后重写URL发出
www.mydomain.com/parser.php?id=19127axbj1
我如何使用htcaccess,使其作为
www.mydomain.com/19127axbj1
这可能吗?我看运球有http://drbl.in/caYS
,所以想知道这样的事情。
通常情况下,RewriteRules会说“如果请求的文件不存在,则向其他文件发送请求”。例如:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /parser.php [L]
然后,您会找到最初请求的路径... $_SERVER['PATH_INFO']
?
这可以防止诸如递归请求之类的事情,并允许您在不打断所有直接文件访问的情况下拥有“漂亮”URL。
您可以使用此规则:
RewriteRule .* /parser.php?id=$0
改变 “www.example.com/whatever” 到 “www.example.com/parser.php?id=whatever”
然而,这仍然允许您直接访问“/parser.php”,而不会受到掩码URL的影响。为了避免这种情况,你有PHP代码重定向:
if (strpos($_SERVER['REQUEST_URI'], "parser.php") !== false) {
header("Location: /$_REQUEST[id]", true, 303);
exit;
}
这不会递减到无穷大吗? /asd - > /parser.php?id=asd - > /parser.php?id=parser.php?id=asd –
@OhCaN我还没有尝试过,所以我不知道,但如果你写正确地说,Apache不会更新REQUEST_URI,因此它不会再重定向。 –
[?MOD-重写或PHP路由器(可能重复http://stackoverflow.com/questions/1868154/mod-rewrite-or -php-router) – mario