[英]Rewriting /foo to /foo.php doesn't work
我希望用户能够 go 到 /foo 并显示 /foo.php。 在谷歌上快速搜索得出了这个:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
但是,由于某种原因,这不起作用。 即使我知道 .php 文件存在,我仍不断收到 404 错误。 我搜索并搜索了一个答案,但它似乎对其他人来说都很好。
顺便说一句,我注释掉了其他规则,所以没有什么与此冲突的。
有任何想法吗?
这就是你需要的:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
也许您需要在 apache 配置中添加指令AllowOverride All或者您可能需要在 .htaccess 文件的开头添加RewriteEngine On
你需要这条规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /$1.php
我找到了答案。 显然这是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]
或者,您可以使用 apache 的MultiViews
选项:
Options +MultiViews
在子文件夹中使用.htaccess
时会出现此问题。 通过使用.htaccess
文件中 web 根目录的完整路径来修复它。 例如,在http://www.mysite.com/test/
文件夹中,您的.htaccess
文件将如下所示:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /test/$1.php
-未测试,可能需要调整-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.