将我的网址重写为“漂亮网址”会导致任何404错误吗?

时间:2012-10-26 10:22:29

标签: php url-rewriting web rewrite friendly-url

美好的一天!我有一个关于从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

提前致谢。

1 个答案:

答案 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']

您可以阅读所请求的文件

示例:

网址:http://my-site.de/Archives

然后在请求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);
}
?>