【问题标题】:Will rewriting my URLs into "Pretty URLs" cause any 404 errors?将我的 URL 重写为“Pretty URLs”会导致任何 404 错误吗?
【发布时间】:2012-10-16 14:39:22
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 这不是重定向代码..当您调用site.com/archives 时会自动调用site.com/archives.php 并且答案是否定的.. 调用站点没有问题。 com/archives.php 应用此条件后
  • 正如@JanDvorak 所说,只需测试它。如果您处于生产阶段,最好有另一个页面(或子域)来尝试其他新功能。

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


【解决方案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

然后在请求变量中,您将拥有字符串“Archives”,现在您可以使用 strtolower 将字符串解析为小写(我更喜欢这个.. 如果 uri 是通过驼峰式大小写调用的)

另一个例子:

网址: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);
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多