2017-06-18 60 views
1

我使用這個.htaccess規則來檢測URL的用戶名之前,而訪問者重定向到用戶的個人資料頁:檢測是否在.htaccess中存在目錄使用規則

# username handler 
RewriteRule ^([a-z]{2,30})$ /user.php?username=$1 [L] 

這樣:

example.com/asantos打開user.php?username=asantos

我也有第一級目錄:

  • example.com/ajax/
  • example.com/static/
  • example.com/assets/

所以,如果我打開任何這些目錄直接,他們得到的htaccess的規則檢測,因而被重定向到:

  • example.com/user.php?username=ajax
  • example.com/user.php?username=static
  • example.com/user.php?username=assets

當且僅當該目錄已經存在時,我該如何忽略該規則.htaccess

回答

1

你可以這樣說:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]{2,30})$ /user.php?username=$1 [L] 

或者有更好的表現,列出目錄,以避免輪詢文件系統:

RewriteCond %{REQUEST_URI} !/(?:ajax|static|assets)$ 
RewriteRule ^([a-z]{2,30})$ /user.php?username=$1 [L]