我有一个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
感谢。
答案 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]