如何为cms进行一次mod重写,为静态页面进行另一次mod重写?

时间:2012-10-07 06:10:37

标签: regex drupal mod-rewrite

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

RewriteRule ^ index.php [L]

除此之外,我希望能够发布静态html页面,并让它们也使用干净的URL。我想通过添加一个特定的关键字来区分它们与drupal页面。内容,也许有类似下面的东西(不确定这是否有效) - 我得到一个网址,如www.domainname.com/nice-holiday并将其翻译为 domainname.com/ftp/pages/nice-holiday.html

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

问题是第一个规则将尝试针对所有请求执行。我已经尝试将更具体的规则放在更一般的规则之前,但它仍然无效。 你怎么能有两个基于条件的mod重写规则?例如存在一个特定的词?更普遍的是,任何人都有在一个网站上处理CMS和静态页面的经验 - 或者那是在寻找麻烦?

1 个答案:

答案 0 :(得分:0)

这就是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。