我正在使用它:
RewriteRule ^(.+)/?$ index.php?slug=$1 [L]
更改用户看到的内容:
example.com/hello/world
到服务器看到的内容:
example.com/index.php?slug=hello/world
但它不起作用。我知道.htaccess本身正在工作,因为我已经尝试了其他更简单的规则,我已经在其他地方使用过它们工作正常。这个有问题吗?
谢谢!
答案 0 :(得分:1)
如果文件或目录确实存在,请不要处理规则。这将阻止规则对index.php
起作用并导致重写循环。它还可以防止它影响你的静态内容(css,js,images)。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ index.php?slug=$1 [L,QSA]
注意,每条评论都会添加[QSA]
以确保在重写过程中保留现有的查询字符串参数。