我想做mod_rewrite
以便:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
对users/
的任何请求都转到index.php?login=(whatever)
。
RewriteRule ^users/(.+) ?login=$1 [NE,L]
users/
之外的任何其他请求都会转到同一位置。
RewriteRule ^(.+) users/?login=$1 [NE,L]
但第二部分产生500内部服务器错误
我被要求解释它,所以这里有一些例子:
答案 0 :(得分:1)
这应该有效。你必须重复这些条件,它们不会延续到下一个规则。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^users/(.+)$ /users/?login=$1 [NE,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /users/?login=$1 [NE,L]
假设/users/
目录确实存在。
如果您以后没有运行任何规则,则效率更高。它可以防止对现有项目进行任何处理,并避免将文件系统检查加倍。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^users/(.+)$ /users/?login=$1 [NE,L]
RewriteRule ^(.+)$ /users/?login=$1 [NE,L]