2012-12-09 87 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