2012-12-09 109 views
1

我已經創建了允許使用虛空網址的.htaccess文件。但是,如果不輸入索引文件,我將無法輸入www.website.com。即我必須輸入www.website.com/index.php才能看到主頁。這是我的.htaccess文件的樣子:.htaccess文件無法識別index.php

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC] 

任何人都知道如何解決這個問題?謝謝你們!

+0

這是'.htaccess'文件在'www.website.com'主機的文檔根目錄上嗎? –

回答

4

您定義規則的方式增加了複雜性。

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=

  1. 人去修補,方法是檢查*如果$_GET['u']爲空或profile.php/。如果是,則加載index.php
  2. 另一種方法是找到適當的正則表達式爲您的用戶名一旦發現使用它在這裏。

    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。

2

這可能是由於您的服務器設置。 嘗試DirectoryIndex index.php(見http://davidwalsh.name/directory-index-homepage-htaccess

編輯

你有沒有嘗試過沒有重寫規則*(由於我沒有在第一時間正確讀取的問題) - [L]行?

+0

如果是這樣的話。 www.website.com在添加.htaccess之前不會有效,但他明確表示它不再有效。 – Codeguy007

+0

我的道歉,缺乏集中再次擊中。你有沒有試過'RewriteRule。* - [L]'行? – qooplmao

+0

如果你修復你的答案。我將刪除投票。 – Codeguy007