2012-02-06 50 views
3

我試圖得到以下效果:的.htaccess重寫規則

  1. 用戶訪問example.com/profile/Tom和它的背景,使得它example.com/profile.php?用戶名=湯姆
  2. 而不是每行的.htaccess行後面(圖1),我希望它是簡短的,並很好地工作,例如用戶訪問example.com/hellout,然後使用about.php,然後使用example.com/helloworld,它使用helloworld.php

就像現在,我必須爲每個我想要的網址添加以下內容,並且相反,我需要2-3行可以完成這項工作的.htaccess。 (如果可能,更好,我不是很好的.htaccess)

RewriteRule ^login/submit$ login.php?action=submit 
+0

的是,在你的.htaccess唯一的規則?圖1是什麼? – 2012-02-06 11:33:30

+0

@BookOfZeus編輯的OP – Oyed 2012-02-06 11:35:25

回答

3

試試這個,讓我知道。

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^profile/([^/])/? profile.php?username=$1 [L,NC] 

RewriteRule ^login/submit$ login.php?action=submit [L,NC] 

# /login/ will go to login.php or /contact/ will go to contact.php 
RewriteRule ^([a-z0-9_\-]+)/? $1.php [L,NC] 

以下是關於[]標誌的完整文檔:http://httpd.apache.org/docs/2.3/rewrite/flags.html

+0

似乎沒有工作,但我忘了提及我在一個目錄中工作,而不是網站的根。編輯:擺脫RewriteBase修復它,謝謝! – Oyed 2012-02-06 11:58:32

+0

沒問題,謝謝 – 2012-02-06 12:04:30

+0

剛剛發現一個問題,當使用action =「login/submit」的表單時,多次使用表單使其停止工作。例如。如果我一次使用表單,工作正常。再次按提交,它會嘗試/登錄/登錄/提交,然後再次按下它使其嘗試/登錄/登錄/登錄/提交等等。 – Oyed 2012-02-06 17:09:30