我有很多规则,结构如下。 有没有办法只有一个能满足所有这些情况?
RewriteRule ^ecology/?$ /content.php?slug=ecology [NC,L]
RewriteRule ^vraveia/?$ /content.php?slug=vraveia [NC,L]
RewriteRule ^bonus/?$ /content.php?slug=bonus [NC,L]
我试过
RewriteRule ^(.+)/?$ /content.php?slug=$1 [NC,L]
没有运气
答案 0 :(得分:0)
使用:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ /content.php?slug=$1 [NC,L]
这样,您可以避免重写现有文件或目录
使用-f测试文件,使用-d测试目录。 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
答案 1 :(得分:0)
假设最终URL中包含尾部斜杠是您的问题,请尝试使捕获非贪婪:
RewriteRule ^(.+?)/?$ /content.php?slug=$1 [NC,L]
如果您只想匹配一个级别(例如ecology/
但不匹配ecology/one/two/
),请使用:
RewriteRule ^([^/]+?)/?$ /content.php?slug=$1 [NC,L]