.htaccess无法使用某些PHP文件

时间:2015-04-22 18:40:20

标签: php apache .htaccess

我有一个environment.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);文件,找不到某些.htaccess文件但会找到其他文件。例如,

  

php

会提供RewriteRule ^test$ test.php

  

404 not found

会奏效。

对于将.php添加到URL末尾的规则,它是相同的。有什么想法吗?

完整档案

RewriteRule ^custom$ test.php

完整目录(ls -a)

RewriteEngine On
RewriteRule ^test$ test.php #doesn't work
RewriteRule ^custom$ test.php #works

感谢。

3 个答案:

答案 0 :(得分:3)

确保multiviews处于关闭状态,这样就不会导致任何有趣的商家尝试匹配文件。此外,始终使用[L],以便在符合规则时停止处理规则。通过继续运行其他规则,这也可能导致问题。如果你有一个尾部斜杠也没关系。为了更好的衡量,您也可以检查条件,以便如果它不是真实的文件或不是真正的目录,它将处理规则,您将不会获得404.

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/?$ test.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^custom/?$ test.php [L]

答案 1 :(得分:1)

如果根目录中存在带有规则名称的文件/文件夹,则无法按预期工作。因为默认情况下输入http://127.0.0.1/test会将其更改为http://127.0.0.1/test/目录。但不能使用http://127.0.0.1/custom,因此请在规则中添加一个尾部斜杠。

RewriteEngine On
RewriteRule ^test/$ test.php
RewriteRule ^custom$ test.php

答案 2 :(得分:0)

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1.php [L,R=301]

这是我在我的网站上使用添加尾部斜杠的内容,我将其修改为添加.php。这是你在找什么?

或者这也应该起作用

RewriteRule ^test test.php [L,R=301]
RewriteRule ^custom test.php [L,R=301]