我已經找到了我的mod_rewrite困境的答案,我覺得我在我的智慧結束。我將有一個這樣的網址:http://www.website.com/dashboard.php?username=stackoverflow
。這個網址並不是最漂亮的。所以我的目標是在這裏做一些事情...Apache mod_rewrite頁面前的查詢字符串,並刪除擴展
- 消除php文件的擴展(我已經能夠做到這一點與我將在下面顯示的代碼,但我不' t知道它將保持根據我需要做的其他事情)
- 消除「www」前綴
- 移動用戶名查詢字符串(僅當它是「用戶名」,我不想匹配「id 「或類似)直接在」.com /「之後
- 在查詢字符串後面移動php文件名(不帶擴展名)。
最終的URL應該看起來像這樣:http://website.com/stackoverflow/dashboard
或者也許http://website.com/stackoverflow/profile
。
的代碼,我現在所擁有的,它消除了文件的擴展名是這樣的:
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
# remove .php ONLY if requested directly
RewriteCond %{THE_REQUEST} (\.php\sHTTP/1)
RewriteRule ^(.+)\.php$ /$1 [R=301,L,QSA]
# remove trailing slash ONLY if it is not an existing folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# rewrite to FILENAME.php if such file does exist and is not a folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L,QSA]
可悲的是這只是修復我的問題之一,看着它之後,我越來越覺得會有更好的方法來做到這一點...
到site.com我d建議您閱讀YSlow插件中非常有趣的「優化網站」規則,並且您可能會猜測爲什麼刪除「www」,除非您的靜態內容指向另一個域名是一個壞主意。 – 2012-04-04 06:10:20
啊,好點奧利維爾...這是一個很好的觀點。謝謝! – cereallarceny 2012-04-04 17:57:45
在這裏閱讀這個關於www的非常好的答案:http://webmasters.stackexchange.com/questions/6107/www-yoursite-com-or-http-yoursite-com-which-one-is-futureproof – 2012-04-05 07:10:59