繁体   English   中英

从htaccess重写规则中排除多个路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM