2012-03-23 93 views
0

所以我想使用mod_rewrite改造:PHP的.htaccess mod_rewrite的

random_name.com/main.php?user=$user 

random_name.com/$user 

($的用戶被添加到URL中的PHP變量,所以它可以是任何名稱如安迪或麗貝卡,這樣的名稱)

和我對的.htaccess代碼:

RewriteEngine on 
RewriteRule ^/([A-Za-z0-9-]+)/?$ main.php?id=$1 [NC,L] 

但是由於某種原因,這似乎不起作用。我已經閱讀過這些教程,但它們非常複雜,看起來這樣做會訣竅,但事實並非如此。如果有mod_rewrite經驗的人會給我幾個提示,我會很感激。

+2

嘗試沒有領先的'/'。它基本上隱含在一個url中,所以不包含在匹配的URI中。 – 2012-03-23 03:08:09

+0

@MarcB你應該將其作爲答案發布。它有助於[閱讀文檔](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule),查看最後一個示例以及每個目錄配置('.htaccess')的不同之處到它上面的每個服務器。 – Phil 2012-03-23 03:11:47

+0

嘿我試過這個,它似乎沒有工作o.o. – r1nzler 2012-03-23 03:12:28

回答

1

的試試這個:

RewriteEngine on 
RewriteRule ^([A-Za-z0-9-]+)$ main.php?user=$1 [NC,L] 
+0

嘿安德烈斯,我也試過這個,它似乎沒有工作。 :/ – r1nzler 2012-03-23 03:13:08

+0

'RewriteRule(。*)main.php?user = $ 1 [NC,L]'?這是不一樣的,但是如果它能夠工作,那麼你可以改進正則表達式,或者在你的PHP代碼中使用'$ _GET ['user']'變量。 – 2012-03-23 03:18:15

+0

嘿安德烈斯,只是一個簡單的問題。我使用了$ _POST ['user']而不是$ _GET ['user'],然後添加了一些php代碼,如$ user = $ _ POST ['user'];和標題(「Location:main.php?user = $ user」);.我想使用$ _GET而不是$ _POST? – r1nzler 2012-03-23 03:26:03

3

您不能使用mod重寫將random_name.com/main.php?user=$user轉換爲random_name.com/$user。
您必須在您網站上的所有鏈接中手動執行此操作。

之後,你可以使用國防部重寫的逆轉變,這將使/main.php?user=$user/user要求