Mod重写逻辑

时间:2016-07-01 03:51:41

标签: php mod-rewrite

我从未真正使用mod重写,我试图了解实现它的最佳方法。删除.php扩展名。我找到了这段代码

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

问题是,如果链接是domain.com/index.php,它就不会写入domain.com/index

此外,如果我链接domain.com/index,该人仍然可以添加.php,它仍然可以正常工作。

我想知道正确的方法..我是否需要对html中的网址进行硬编码或是否有可以自动执行的操作?

我不希望他们能够将.php添加到最后

1 个答案:

答案 0 :(得分:0)

您需要附加规则才能删除.php。您使用的规则只允许您访问没有扩展名的php文件但不删除扩展名。要删除您可以使用的.php

RewriteEngine on
#1) redirect "/file.php" to "/file"
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [L,R,NE]
#2) internally map "/file" back to "/file.php"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php