mod_rewrite重写除index.php以外的所有内容

时间:2009-10-18 16:35:18

标签: php apache mod-rewrite

在我的htaccess中我有

RewriteRule ^([^/]+)/?$ cms.php?seotitle=$1 [L]

想法是index.html将加载正常,然后在domain.com/anythinghere.html请求的任何内容将使用从cms.php获取文件的规则。

然而它不起作用 - 任何线索?真的需要这个排序asap。

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteCond %{REQUEST_URI} !(index.html)
RewriteRule ^([^/]+)/?$ cms.php?seotitle=$1 [L]

另一种方法是使用-f-d标志,这意味着现有文件或目录。

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^([^/]+)/?$ cms.php?seotitle=$1 [L]

使用此功能时,不会重写任何现有文件或目录。这很有用,特别是对于css或js文件。

答案 1 :(得分:0)

尝试此规则:

RewriteCond $1 !^(cms\.php|index\.html)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ cms.php?seotitle=$1 [L]