我目前有一个安装了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和静态页面的经验 - 或者那是在寻找麻烦?
答案 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。