2016-01-09 18 views
0

基本上,我有这样的目录设置:.htaccess |打开文件不目录

/.htaccess 
/home.php 
/office.php 
/office/tutorials.php 

和.htaccess文件是这样的:

<Files ~ "^\.(htaccess|htpasswd)$"> 
deny from all 
</Files> 
order deny,allow 

# setup 
DirectoryIndex /home.php 
ErrorDocument 403 /err403.php 
ErrorDocument 404 /err404.php 

# remove trailing slash 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} (.+)/$ 
RewriteRule^%1 [R=301,L] 

# To internally forward /dir/file to /dir/file.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC] 
RewriteRule ^(.+?)/?$ /$1.php [L] 

现在下面发生的事情。 当我打电话给“www.domain.com/home”时,它完美地工作。 但是当我尝试打电话给“www.domain.com/office”时,我总是得到home.php页面而没有样式,它显示我在“www.domain.com/office/”,所以我猜名为office的目录。

我试着重命名办公室/目录,然后office.php文件再次完美工作,但我需要的目录命名为相同的文件,所以该URI看起来不错,干净,并建立在彼此像这个:

www.domain.com/office (own page) 
www.domain.com/office/tutorials (own page) 

在此先感谢!

回答

0

你的第3至最后一行写着:

RewriteCond %{REQUEST_FILENAME} !-d 

你问的Apache不映射到www.domain.com/office因为office.php有一个直接调用office。如果这不是你的愿望,请删除该行。

+0

太棒了!这解决了大部分问题,但是现在它在URI的末尾添加了一个斜杠,当存在一个同名的目录时... –

+0

如果您希望将“删除尾部斜线”规则应用于目录,则从该规则中删除相同的RewriteCond。 –

+0

我尝试过,但后来我得到一个重定向错误... –