1
我创建了一个新函数,希望实现面包屑和更好的URL结构。从htaccess重写规则排除多个路径
此之前,我有以下规则:
RewriteRule ^pages/([a-z0-9,&-]+)/?$ ?action=viewArticleName&page_identifier=$1 [L,NC,QSA,B]
这意味着,
www.example.com/pages/contact
从数据库中返回了一篇文章。现在我想改变这种做法,我的网址看起来像
www.example.com/categoryname/pagename
所以我对这个工作重写规则:
RewriteRule ^([^/]+)/([^/]+)$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L]
问题是这样的规则被造成任何图像被包括来自/图像加载包括该文章的模板。
我能想到的三种可能的解决方案,而不是实际的代码:
1)我可以创建类别名称的阵列?然后我可以以某种方式使RewriteRule只适用于这些名称。
2)创建一个包含一些全局设置的类。在这有一些PHP,定义或设置图像路径。我能想到的就是;
define("IMAGE_PATH", "//example.com/images");
3)添加一些东西到Htacces文件中,从规则中排除某些路径。
我知道MVC或类似的会取得更好的结果。这是关于我的学习,请告诉我,如果我在这里挖了一个洞!
非常感谢, 亚当
这就是完美的工作!你介意解释一下哪部分代码会跳过所有现有的文件/目录? – atoms 2014-09-03 07:33:11
我在回答中添加了一些评论。基本上'%{REQUEST_FILENAME}!-f'表示它是否不是文件,'%{REQUEST_FILENAME}!-d'表示如果请求不是用于目录。 – anubhava 2014-09-03 07:34:57
完美的作品,感谢阐述将标记您的评论 – atoms 2014-09-03 07:35:46