2011-10-21 54 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,因此它不會再重定向。 –