2011-10-21 11 views
2

所以,如果我有以下网址:htaccess的删除.php然后重写URL发出

www.mydomain.com/parser.php?id=19127axbj1 

我如何使用htcaccess,使其作为

www.mydomain.com/19127axbj1 

这可能吗?我看运球有http://drbl.in/caYS,所以想知道这样的事情。

+0

[?MOD-重写或PHP路由器(可能重复http://stackoverflow.com/questions/1868154/mo​​d-rewrite-or -php-router) – mario

回答

1

这是可能的。

RewriteRule ^(.*)$ /parser.php?id=$1 [L] 
+0

如果这是另一种方式,如果我做www.mydomain.com/19127axbj1,并且将其转换为php – adit

+0

,那么我也有你在.htaccess上写的内容,它不起作用 – adit

0

通常情况下,RewriteRules会说“如果请求的文件不存在,则向其他文件发送请求”。例如:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /parser.php [L] 

然后,您会找到最初请求的路径... $_SERVER['PATH_INFO']

这可以防止诸如递归请求之类的事情,并允许您在不打断所有直接文件访问的情况下拥有“漂亮”URL。

0

您可以使用此规则:

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; 
} 
+0

这不会递减到无穷大吗? /asd - > /parser.php?id=asd - > /parser.php?id=parser.php?id=asd –

+0

@OhCaN我还没有尝试过,所以我不知道,但如果你写正确地说,Apache不会更新REQUEST_URI,因此它不会再重定向。 –