2012-03-10 73 views
1

我想写一个.htaccess文件,将URL重写删除索引页

一)导航到mysite.com/myusername(这是不存在的),它会显示mysite.com/的内容时DMP /温度/名为myUsername

b)由.PHP隐藏URL的

当去然而mysite.com它,它显示我mysite.com/dmp/temp文件夹的内容。如果我在前面添加/索引,那么它将工作。

除此之外,一切都按预期工作。我如何确保只需导航到mysite.com的用户可以使用index.php(没有真正写入/ index /或/index.php),也没有重定向到/ dmp/temp文件夹?

代码:

Options +FollowSymLinks 
Options +Indexes 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %(REQUEST_URI) !^temp 
RewriteRule ^(.*) dmp/temp/$1 [L] 

回答

3

让我们来看看你的两个正则表达式:

^([^\.]+)$ 

^(.*) 

第一招:匹配每一个查询不包含。长度为1或更多。
第二个:匹配从长度为0或更长的所有内容。

所以如果你打开http://mysite.com/你有一个空的查询,它与第二个正则表达式匹配。这意味着它试图打开dmp/temp/

尝试将第二个正则表达式从^(.*)更改为^(.+)。这意味着只有在查询长度为1或更多时才会匹配,并且它不会匹配http://mysite.com/。希望你会去标准的行为,显示索引。*文件根据服务器设置(在你的情况下index.php)

+0

出色解释!非常感谢。这也解决了它。 – tctc91 2012-03-10 15:19:05