我有一个网站在子文件夹中有一个新闻部分,我一直在手动添加。
www.example.com/subfolder/news-and-views/name-of-article.php
我最近制作了一个相当简单的CRUD功能,可以更轻松地添加这些文章。
我有:
www.example.com/subfolder/news-and-views/index.php
- 显示所有文章www.example.com/subfolder/news-and-views/article.php
- 这会从$_GET
请求我查看文章时最终得到的网址是:
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
的变量,它是根目录的数量。
E.g $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
答案 0 :(得分:1)
RewriteRule /news-and-views/(.+) /news-and-views/article.php?Id=$1.php [L]
正如我的评论中提到的,你似乎省略了/subfolder
,所以我不确定这是怎么重写的呢?您还需要小心重写现有文件(例如index.php
和article.php
以及CSS?)并创建重写循环。
请尝试以下内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(subfolder/news-and-views)/(.+) /$1/article.php?Id=$2.php [L]