2010-09-16 89 views
1

我正在尝试创建一个mod_rewrite规则,该规则将删除所有添加到要放入的url的.htm。例如,如果某人键入example.com/faculty/jim.htm ,我想让drupal忽略.htm,然后转到example.com/faculty/jim页面。任何mod_rewrite专家都可以帮忙?有什么我可以在.htaccess中使用默认的Drupal重写代码改变:从URL中删除.htm

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

在此先感谢。

回答

3

没有测试,但是把

RewriteRule ^(.*)\.htm$ $1 

之前的标准Drupal的重写规则应该这样做。

如果你想这触发只为不存在的文件,你可以添加相同的条件与主Drupal的重写规则:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.htm$ $1 

这些条件检查REQUEST_FILENAME是现有的文件或目录。

+0

正如一个侧面说明,在这里标记'mod_rewrite'的问题比在ServerFault上大约多七倍,所以[因为它是确定的](http://meta.stackexchange.com/questions/39063/mod-rewrite-questions -getting-migrated-to-sf),在这里问实际上可能会更好。 :) – 2010-09-17 01:00:07

+0

@Tim:感谢指针 - 我删除了这条评论(并且会尝试记住这个以备将来mod_rewrite的问题;) – 2010-09-17 12:14:20

+0

感谢Henrik,这个工作!但是,我在我的网站上发现了一个引用实际.htm文件的情况(tinyMCE插件是罪魁祸首)。有没有办法忽略一个文件是否存在,但是如果它存在则加载文件? – bkildow 2010-09-17 14:44:57