我希望用户能够转到/ foo并显示/foo.php。谷歌的快速搜索提出了这个:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
但出于某种原因,这不起作用。我一直收到404错误,即使我知道.php文件存在。我搜索并搜索了一个答案,但它似乎对其他人都很好。
顺便说一句,我对其他规则进行了评论,因此没有任何内容与此相冲突。
有什么想法吗?
答案 0 :(得分:3)
这就是你需要的:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
答案 1 :(得分:1)
也许您需要在apache配置中添加指令AllowOverride All,或者您需要在.htaccess文件的最开头添加RewriteEngine On
答案 2 :(得分:1)
您需要此规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /$1.php
答案 3 :(得分:1)
我找到了答案!显然这是1and1服务器配置的问题。本文解释了问题:http://tips.webdesign10.com/web-hosting/why-you-should-never-use-1and1-com-hosting
第一条评论也恰好是解决方案。这是有效的规则:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [L,QSA]
答案 4 :(得分:0)
或者您可以使用apache的MultiViews
选项:
Options +MultiViews
答案 5 :(得分:0)
在子文件夹中使用.htaccess
时出现此问题。通过使用.htaccess
文件中的Web根目录的完整路径来修复它。例如,在文件夹http://www.mysite.com/test/
中,您的.htaccess
文件将如下所示:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /test/$1.php
- 未经测试,可能需要调整 -