2013-06-11 141 views
4

我正在四处寻找重复项目,但我无法找到我认为应该是一个简单的答案。htaccess添加.php到没有扩展名的所有东西

什么是将.php添加到没有扩展名的任何重写规则?

例子:

www.website.com/styles.css - > www.website.com/styles.css

www.website.com/login - > www.website.com/login .php

谢谢!

+0

在什么情况下你想这样做?这些链接是否在文件中?他们是否在动态生成的网页中? – IanPudney

+0

没有什么奇特的。我网站上的所有网页都是php脚本,我只想使用漂亮的网址。我现在对我的网站上的每一个页面都有一个规则,因为我不知道简单的方法:对于每一个我拥有的页面,都有'RewriteRule^login $ login.php [L]'...我希望用户能够键入/登录并获得完整的login.php页面 – pinhead

回答

7

下可满足您的需求:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+)$ $1.php [L] 

这将扩展名.php自动添加到文件名不带扩展名。它可能会尝试将something.css重命名为something.css.php,但只有在存在something.css.php时才会这样做。

+0

,谢谢 – pinhead

+0

我该如何将此与“CheckSpelling”结合来添加不区分大小写?我在尝试,但失败! – pinhead

+0

我不知道答案 - 我建议提出另一个问题,以征求更多答复。 – IanPudney

2

要通过@quinxorin扩大答案,您还可以执行以下操作。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteCond %{REQUEST_FILENAME}\.php ^(.*)\.php(.*)$ 
RewriteRule .* %1.php?%2 [QSA] 

这会将url的其余部分追加到结果中。即/page/1234变成/page.php?1234