我怎样才能为 cms 重写一个模组,为静态页面重写另一个模组



>我目前有一个安装了Drupal的网站,它有干净的网址,所以.htaccess文件包含以下内容:

RewriteRule ^ index.php [L]

除此之外,我还希望能够发布静态 html 页面并让它们使用干净的 url。我正在考虑通过添加特定的关键字(例如内容)将它们与 drupal 页面区分开来,并且可能具有如下所示的内容(不确定这是否有效) - 我在其中获得一个像 www.domainname.com/nice-holiday 这样的 url 并将其翻译成domainname.com/ftp/pages/nice-holiday.html

RewriteRule   ^content/(.+)$   domainname.com/ftp/pages/$1.html   [L]

问题是第一个规则将尝试针对所有请求执行。我尝试将更具体的规则放在更一般的规则之前,但它仍然不起作用。你怎么能有两个基于条件的模组重写规则?例如,存在特定单词?更一般地说,是否有人有处理一个网站上的CMS和静态页面的经验 - 或者这是在自找麻烦?

这就是

RewriteCond派上用场的地方。

# make sure no rewriting is done for requests without www
RewriteCond %{HTTP_HOST} !^domainname.com
RewriteCond %{REQUEST_URI} !^/?content/
RewriteRule ^ index.php [L]
# later on...
# don't want this rule to apply for non-www requests either
RewriteCond %{HTTP_HOST} !^domainname.com
RewriteRule ^/?content/(.+)$ http://domainname.com/ftp/pages/$1.html [L]

我想这就是你要做的吗? 如果您实际上并不关心 www 的事情,则可以完全消除 %{HTTP_HOST} 条件。 只要您在 drupal 重写上保持%{REQUEST_URI}条件,这两个规则仍然可以共存,因此 drupal 重写明确不适用于以/content/前缀开头的 URI。

最新更新