我的mod_rewrite规则有问题吗?

时间:2011-11-15 19:17:52

标签: apache .htaccess mod-rewrite

我正在使用它:

RewriteRule ^(.+)/?$ index.php?slug=$1 [L]

更改用户看到的内容:

example.com/hello/world

到服务器看到的内容:

example.com/index.php?slug=hello/world

但它不起作用。我知道.htaccess本身正在工作,因为我已经尝试了其他更简单的规则,我已经在其他地方使用过它们工作正常。这个有问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果文件或目录确实存在,请不要处理规则。这将阻止规则对index.php起作用并导致重写循环。它还可以防止它影响你的静态内容(css,js,images)。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ index.php?slug=$1 [L,QSA]

注意,每条评论都会添加[QSA]以确保在重写过程中保留现有的查询字符串参数。