美好的一天!我有一个关于从URL中删除文件扩展名的问题。
如果我使用以下规则从我的网站网址中删除.php扩展名,那么之前任何网站页面的链接是否会中断?
如果www.site.com/archives.php成为www.site.com/archives 任何通往www.site.com/archives.php的链接是否仍会导致www.site.com/archives或是否会导致404?
重写规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
提前致谢。
答案 0 :(得分:1)
我建议你一个更好的解决方案。
RewriteEngine on
# dont rewrite for directories
RewriteCond %{REQUEST_FILENAME} !-d
# rewrite everything else to index.php
RewriteRule .* index.php [L]
现在你可以在index.php中使用变量
$_SERVER['REQUEST_URI']
您可以阅读所请求的文件
示例:
然后在请求var中你将拥有字符串“Archives”现在你可以用strtolower解析字符串为小写(我更喜欢这个..如果uri是通过camel case调用的)
另一个例子:
网址:http://my-site.de/Archives/Latest/Show
请求变量包含字符串“Archives / Latest / Show”
现在,您可以使用该目录在同一目录中的服务器上查找文件,或使用路径作为请求的参数。
PHP结尾的解决方案在php中看起来像这样:
<?php
$requestedPath = $_SERVER['REQUEST_URI'];
if (substr(strtolower($requestedPath),-4) != '.php') {
$requestedPath .= '.php';
}
if (file_exists($requestedPath)) {
include_once($requestedPath);
}
?>