2014-12-13 38 views
2

使用RewriteEngine叙述在我的网站时的index.php不作为我的索引文件,我有以下.htaccess文件有简洁的网址:为什么在.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

这是伟大的工作,当用户键入在hostname.com/filename,但它取消了自动重定向,当用户浏览到hostname.com/map/,作为RewriteEngine叙述的地图,这给下面的结果后,会自动将.PHP:

https://hostname.com/map/.php 

有一种使用index.php作为用户浏览地图时使用的索引文件的方式而不是文件,同时仍然对用户浏览文件具有相同的效果?因此,预期的结果是基于3种选择:

+0

我希望这是非常明显的,这听起来有点乱,当我再次阅读问题。我会尽力改善它。 – 2014-12-13 00:20:03

回答

1

一般来说,如果配置自动使用index.php你只需要添加 后RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d 
+0

在我的示例中,是否应将示例中的-f更改为-d?或者在给定示例下面添加-d的条件? – 2014-12-13 00:25:27

+1

非常感谢你,这似乎解决了这个问题!正如你所建议的那样,我现在正在使用这两种条件,但是它似乎只是将我的示例中的条件更改为您的版本(使用-d),是否有任何理由说明为什么这似乎也适用,或者为什么我不应该使用它? – 2014-12-13 00:26:55

+0

使用'-f'测试一个文件是否存在相同名称,并且在这种情况下不添加'.php'。用'-d'测试目录。测试两者都是一个好主意。你可以阅读更多信息:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond – Croises 2014-12-13 00:30:53

相关问题