【问题标题】:seo url would not open after shifting files to root dir from sub将文件从 sub 转移到根目录后,seo url 无法打开
【发布时间】:2016-09-19 13:36:50
【问题描述】:

我当前的 seo url 位于子目录上,它工作正常,但尝试在根目录上使用脚本后,链接无法打开

这是articles.php 代码

$url = $_SERVER['REQUEST_URI'];
$url = str_replace('/', '', $url);

$stmt = $db->prepare("SELECT * FROM articles WHERE seo_url = :seo_url");
$stmt->bindParam(':seo_url', $url, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch();
$cou = $stmt->rowCount();

if($cou <1){
        header("Location: error.php");
        exit();
}

我的 htaccess 是

RewriteEngine On

# SEO URL Settings

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)\?*$ articles.php?$1 [L,QSA] 

上面的代码将我重定向到 error.php 页面

之前的子文件夹是这样的

$url = $_SERVER['REQUEST_URI'];
    $url = str_replace('/test/', '', $url);

RewriteBase /test/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)\?*$ articles.php?$1 [L,QSA] 

【问题讨论】:

  • 给出一些以前有效但现在无效的示例 URL。
  • 将上面提到的第二部分贴上之前的工作
  • 我存储的 url 就像 1/state/city/some-text-for-title 但是使用第一段代码我在存储的 url 前面得到一个 / 像 /1/state/city /some-text-for-title

标签: php .htaccess seo


【解决方案1】:

您正在使用以下代码替换请求 uri 中的“/”:

$url = $_SERVER['REQUEST_URI'];
$url = str_replace('/', '', $url);

您应该尝试仅从 uri 中删除最后一个“/”(如果 seo_url 字段值存储在数据库中,如“/some-dir/yourpage/”),例如:

$url = rtrim($url, '/');

【讨论】:

  • 伴侣 m 试图删除第一个 / 我存储的 url 就像 1/state/city/some-text-for-title 但是当我在 1 的前面回显时 om 文章页面是 id a / 来自我不知道的地方,所以 url 变成 /1/state/city/some-text-for-title 并且因为 / 在开头没有从 db 显示结果
  • 你可以试试$url = ltrim($url, '/');,它会满足查询并给你计数。
  • /1/state/city/neque-porro-quisquam-est-qui-dolorem-ipsum-quia-dolor-sit-amet-consectetur 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE [23000]:违反完整性约束:1048 列 'postID' 不能为 null' in
  • 还是 / 在 1 前面
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 2014-06-06
  • 2014-11-21
相关资源
最近更新 更多