【问题标题】:RewriteRule for friendlier URLs更友好的 URL 的 RewriteRule
【发布时间】:2017-09-14 20:22:02
【问题描述】:

我有一个网站,它的子文件夹中有一个新闻部分,我一直在手动添加它。

www.example.com/subfolder/news-and-views/name-of-article.php

我最近做了一个相当简单的 CRUD 功能,以使添加这些文章更容易。

我有:

  1. www.example.com/subfolder/news-and-views/index.php - 显示所有文章
  2. www.example.com/subfolder/news-and-views/article.php - 这需要来自 $_GET 请求的 Id 参数

当我查看一篇文章时,我最终得到的网址是:

www.example.com/subfolder/news-and-views/article.php?Id=name-of-article

我做了一些阅读并使用http://htaccess.mwl.be/ 来测试 RewriteRule

规则是:RewriteRule /news-and-views/(.+) /news-and-views/article.php?Id=$1.php [L]

但是,当我转到 news-and-vies/(索引页面)时,我的 CSS 被删除,并且在我的路径发生更改时没有显示任何内容。

而且它似乎去 article.phpid?= 没有传递任何东西,而不仅仅是使用实际的索引页面。

为了设置路径,我使用了一个名为$path2root 的变量,它是根目录的数量。 例如$path2root = "../../";

所以:我有include $path2root . "includes/head.php"

我的 RewriteRule 是否干扰了这个变量?

我的 .htaccess 文件

RewriteEngine On
RewriteRule /news-and-views/(.+) /news-and-views/article.php?Id=$1.php [L]

我的文件结构

/ .htaccess at this level (root)
--/ subfolder
----/ news-and-views
------/ index of news and views

【问题讨论】:

  • 这个.htaccess 文件在哪里? substitution 字符串中的/subfolder 发生了什么?请包含您的整个.htaccess 文件。
  • 好的,我会添加额外的细节

标签: php .htaccess mod-rewrite


【解决方案1】:
RewriteRule /news-and-views/(.+) /news-and-views/article.php?Id=$1.php [L]

正如我在评论中提到的,您似乎省略了/subfolder,所以我不确定这是如何成功重写的?您还需要小心重写现有文件(例如 index.phparticle.php 和 CSS?)并创建重写循环。

请尝试以下方法:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(subfolder/news-and-views)/(.+) /$1/article.php?Id=$2.php [L]

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2014-06-22
    • 2013-02-16
    • 2013-08-14
    • 2011-08-25
    相关资源
    最近更新 更多