您定義規則的方式增加了複雜性。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
上述規則意味着如果文件名是文件處理的目錄,因爲它是。之後不要再處理。
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]
這條規則意味着任何請求URI映射到profile.php?u=
現在,當你要求/
是www.website.com
它檢查的第一條規則,它不能匹配。然後檢查第二條規則並將其映射到profile.php?u=
。
- 人去修補,方法是檢查*如果
$_GET['u']
爲空或profile.php
/
。如果是,則加載index.php
。
另一種方法是找到適當的正則表達式爲您的用戶名一旦發現使用它在這裏。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L]
來處理,這是使用PHP的最好方法,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?uri=$1 [L]
現在index.php
將獲得每次通過URI。現在您可以在index.php
中處理URI。
這是'.htaccess'文件在'www.website.com'主機的文檔根目錄上嗎? –