繁体   English   中英

将 /foo 重写为 /foo.php 不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM