[英]Exclude multiple paths from htaccess rewrite rule
我创建了一个新功能,希望能够实现面包屑和更好的URL结构。
在此之前,我有以下规则:
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]
问题是此RewriteRule导致/ images包含的所有图像都加载了文章的包含模板。
我可以想到三种可能的解决方案,但没有实际的代码:
1)我可以创建一个类别名称数组吗? 然后,我可以以某种方式使RewriteRule仅适用于这些名称。
2)创建一个包含一些全局设置的类。 在这里有一些PHP定义或设置图像路径。 我所能想到的是;
define( "IMAGE_PATH", "//example.com/images" );
3)在Htacces文件中添加一些内容以从规则中排除某些路径。
我知道MVC或类似的软件会取得更好的效果。 这是关于我的学习的,请告诉我我是否在这里陷入困境!
非常感谢,亚当
您可以像这样跳过所有现有文件和目录 ,以防止所有图像受到此新规则的影响:
# skip all existing files
RewriteCond %{REQUEST_FILENAME} !-f
# skip all existing directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B]
注意,在标志中添加了“ B”,这转义了非字母数字字符,例如“&”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.